Étape 4: Arduino Code
Ici est le code de l’Arduino pour faire la chose entière exécution.Le crédit pour le code de télécommande IR va à Martin Koch http://controlyourcamera.blogspot.com/ avec le sien grâce à http://www.doc-diy.net/photo/rc-1_hacked/index.php pour trouver le code IR.
Le code est bien commenté, mais l’idée générale est la suivante :
-La tige de l’interrupteur est configurΘ pour dΘmarrer état d’entrée de la hauteur, il s’agit de l’axe d’à que la gâchette RF est attachée.
-L’état de la LED de puissance est réglé sur haut, et la boucle montres pour un changement de pas en cours d’exécution pour s’exécuter. Si cela se produit, la LED clignote (alors que la vidéo est en tournée) et vice versa, une fois que l’enregistrement s’arrête, la LED retourne à solide.
-L’Arduino ressemble pour la goupille de commutateur à tracter LOW, indiquant avoir appuyé sur la gâchette.
-Une fois que cela se produit, il déclenche la séquence vidéo Start/stop à la LED IR.
-L’État vidéo de la course est activé ou désactivé.
-Le buzzer piézo-électrique émet un signal sonore (une fois pour démarrer, deux fois pour arrêter)
Simple que ça.
Le code de clignotement de LED a été écrit par un échantillon de code que j’ai trouvé qui permet la LED clignote sans utiliser le delay() ; fonction pour qu’aucun bouton ne presses sont manquées lors d’un retard dans la boucle. Un petit délai est écrit dans la fonction d’avertisseur sonore piézo-électrique, parce que cela se déclenche immédiatement après que l’enregistrement s’arrête ou démarre et ne fonctionne pas en permanence.
Je n’ai pas un programmateur AVR, alors j’ai utilisé mon Arduino pour écrire du code à la puce atmega328 que j’avais simplement en tirant sur la puce stock hors mon Arduino, insérer la puce j’ai m’aide pour ce projet, écrire le code dessus et permutation de sortir à nouveau.
Ici est le code (également reliés à un. Fichier TXT, renommer .pde):
/* Modifié par JustinHerx pour accepter l’entrée à partir d’une télécommande (filaire/sans fil) et en tournant la const int irLED = 11 ; unsigned int pulseDuration = 10 ; microsecondes unsigned int photo = 7330 ; Un retard de 7330 microsecondes entre les rafales tire une photo. void setup() {}
Basé sur le croquis d’Arduino pour simuler une Canon RC-1 télécommande pour démarrer et arrêter l’enregistrement vidéo sur un Canon 5D Mark II ou 7D
2010, Martin Koch
http://controlyourcamera.blogspot.com/
Énormes remerciements à http://www.doc-diy.net/photo/rc-1_hacked/index.php pour trouver le code IR.
sortie dans une commande IR pour activer/désactiver l’enregistrement vidéo sur un Canon 5D MII, 7D, 60D, etc..
Pièces nécessaires :
-Arduino
-LED de puissance (ou interrupteur avec voyant d’alimentation, j’utilise un interrupteur bouton-poussoir lumineux de RadioShack # 275-0009)
-Buzzer Piezo (RadioShack #273-059)
-jack 2,5 mm pour fixer le déclencheur de l’appareil photo
-IR LED à déclencheur appareil photo
-Résistance pour LED
*/
const int interrupteur = 7 ;
const int buzzPin = 8 ;
const int powerLED = 4 ;
course booléen = false ;
int ledState = élevé ; ledState permet de définir la LED
long previousMillis = 0 ; va stocker la dernière fois mise à jour de LED
intervalle long = 200 ; intervalle à laquelle doit clignoter (millisecondes)
Le pulseDuration 15 microsecondes requis n’a pas fonctionné car digitalWrite consomme quelque temps supplémentaire
thats ajoute à la valeur de pulseDuration. 10 à 12 microsecondes a fonctionné pour moi.
unsigned int vidéo = 5360 ; Un retard de microsecondes 5360 entre rafales démarre/arrête vidéo d’enregistrement.
Serial.Begin(9600) ; Décommentez pour le débogage
pinMode (irLED, sortie) ;
pinMode (entrée, commutateur) ;
pinMode (buzzPin, sortie) ;
pinMode (powerLED, sortie) ;
digitalWrite (SWITCH, élevé) ; Allumez résistance pullup interne de 20 k, donc l’état d’entrée ouvert est haute.
digitalWrite (buzzPin, basse) ;
digitalWrite (powerLED, HIGH) ;
}
void loop() {//run encore et encore
Si (en cours d’exécution == true) / / cette partie de la boucle est de tester si la caméra a été déclenchée pour enregistrer
et clignote le pouvoir a conduit pendant l’enregistrement.
{
Serial.Print("Running") ; Décommentez pour le débogage
Serial.println() ;
unsigned long currentMillis = millis() ;
Si (currentMillis - previousMillis > intervalle) {}
enregistrer la dernière fois vous cligna des yeux la LED
previousMillis = currentMillis ;
Si le voyant est éteint le faire tourner sur et vice versa :
Si (ledState == faible)
{
ledState = élevé ;
}
d’autre
{
ledState = bas ;
}
Définissez la LED avec la ledState de la variable :
digitalWrite (powerLED, ledState) ;
}
}
Si (digitalRead(SWITCH) == faible) {//read commutateur entrée
Shoot(Video) ; Démarrer ou arrêter l’enregistrement vidéo
Si (en cours d’exécution == false) //detect l’état d’enregistrement et inverser
{
en cours d’exécution = true ;
}
d’autre
{
en cours d’exécution =! en cours d’exécution ;
digitalWrite (powerLED, HIGH) ;
}
piezoBeep() ; un signal sonore de l’avertisseur sonore pour indiquer que l’enregistrement a démarré ou arrêté
Delay(500) ;
}
}
shoot de Sub (unsigned int delayBetweenBursts) {//sends le IR signal
Envoyer les 16 premières salves
pour (int i = 0; i < 16; i ++) {}
digitalWrite (irLED, HIGH) ;
delayMicroseconds(pulseDuration) ;
digitalWrite (irLED, basse) ;
delayMicroseconds(pulseDuration) ;
}
delayMicroseconds(delayBetweenBursts) ;
Envoyer le deuxième 16 éclats
pour (int i = 0; i < 16; i ++) {}
digitalWrite (irLED, HIGH) ;
delayMicroseconds(pulseDuration) ;
digitalWrite (irLED, basse) ;
delayMicroseconds(pulseDuration) ;
}
retour ;
}
void piezoBeep() {//beeps le buzzer piezo, une fois pour le début de l’enregistrement, deux fois pour la fin de l’enregistrement
Si (en cours d’exécution == true)
{
digitalWrite (buzzPin, HIGH) ;
Delay(250) ;
digitalWrite (buzzPin, basse) ;
}
d’autre
{
digitalWrite (buzzPin, HIGH) ;
Delay(250) ;
digitalWrite (buzzPin, basse) ;
Delay(100) ;
digitalWrite (buzzPin, HIGH) ;
Delay(250) ;
digitalWrite (buzzPin, basse) ;
}
}