Stap 4: Arduino Code
Hier is de code van de Arduino te maken van het hele ding lopen.Krediet voor de IR-afstandsbediening-code gaat naar Martin Koch http://controlyourcamera.blogspot.com/ met zijn dankzij http://www.doc-diy.net/photo/rc-1_hacked/index.php voor het uitzoeken van de IR-code.
De code is goed gereageerd, maar het algemene idee is dit:
-De SWITCH-pin is ingesteld op open input staat voor HIGH, dit is de pin die aan de RF trigger is gekoppeld.
-De stand van de voedings-LED is ingesteld op hoog en de lus horloges voor een verandering niet lopen naar uitgevoerd. Als dit gebeurt, de LED knippert (terwijl de video is geschoten wordt), en vice versa, zodra de opname stopt, de LED keert terug naar solid.
-De Arduino zoekt de SWITCH pin laag, die aangeeft dat de trigger is ingedrukt worden getrokken.
-Zodra dit gebeurt, branden het videofragment van de Start/stop op de IR-LED.
-De video staat van running is set of unset.
-De piëzo-zoemer piept (eenmaal voor start, tweemaal voor stop)
Simpel als dat.
De LED knipperen code is geschreven uit een monster van de code die ik gevonden waarmee de LED knipperen zonder gebruik te maken van de delay(); functie zodat geen knop indrukt worden gemist tijdens een vertraging in de lus. Een kleine vertraging is geschreven in de piëzo-zoemer functie omdat dit branden onmiddellijk na de opname stopt of begint en niet continu draaien.
Ik heb geen een AVR-programmer, zodat ik mijn Arduino gebruikt om te schrijven van de code naar de atmega328 chip had ik gewoon door te trekken van de voorraad chip uit mijn Arduino, de chip was ik gebruik voor dit project, schrijven van de code aan het en ruilt het uit opnieuw invoegen.
Hier is de code (ook bevestigd een. TXT-bestand, hernoemen naar .pde):
/* Gewijzigd door de JustinHerx voor aanvaarding van de input van een externe (bedraad/draadloos) en draaien de Const int irLED = 11; unsigned int pulseDuration = 10; microseconden unsigned int foto = 7330; Een 7330 microseconden vertraging tussen uitbarstingen schiet een foto. VOID Setup {}
Gebaseerd op Arduino sketch voor het simuleren van een Canon RC-1 IR-afstandsbediening om te starten en stoppen van video-opname op een Canon 5 D Mark II of 7D
2010, Martin Koch
http://controlyourcamera.blogspot.com/
Grote dank gaat uit naar http://www.doc-diy.net/photo/rc-1_hacked/index.php voor het uitzoeken van de IR-code.
output in een IR-commando te activeren/deactiveren van de video-opname op een Canon 5D MII, 7D, 60D, enz.
Onderdelen die nodig zijn:
-Arduino
-Power LED (of schakelen met de voedings-LED, ben ik met behulp van een verlichte drukknop overstap van RadioShack # 275-0009)
-Piëzo zoemer (RadioShack #273-059)
-2.5mm aansluiting te koppelen van de camera trigger
-IR LED trigger camera
-Weerstand voor LED
*/
Const int SWITCH = 7;
Const int buzzPin = 8;
Const int powerLED = 4;
Booleaanse lopen = false;
int ledState = hoog; ledState gebruikt voor het instellen van de LED
lange previousMillis = 0; laatste keer LED werd bijgewerkt zal slaan
lange interval = 200; interval waartegen knipperen (milliseconden)
De vereiste 15 microseconden pulseDuration werkte niet omdat digitalWrite wat extra tijd verbruikt
thats wordt toegevoegd aan de waarde van de pulseDuration. 10 tot 12 microseconden gehanteerd voor mij.
unsigned int video = 5360; Een 5360 microseconden vertraging tussen uitbarstingen start/stopt video opname.
Serial.begin(9600); uncomment voor foutopsporing
pinMode (irLED, OUTPUT);
pinMode (SWITCH, INPUT);
pinMode (buzzPin, OUTPUT);
pinMode (powerLED, OUTPUT);
digitalWrite (schakelaar, hoge); inschakelen, interne 20 k pullup weerstand zodat de open ingang staat hoog is.
digitalWrite (buzzPin, laag);
digitalWrite (powerLED, hoge);
}
void loop {//run opnieuw en opnieuw
Als (uitgevoerd == true) / / dit deel van de lus is om te testen of de camera heeft geweest geactiveerd als u wilt opnemen
en knippert de power LED tijdens het opnemen.
{
Serial.Print("running"); uncomment voor foutopsporing
Serial.println();
unsigned long currentMillis = millis();
Als (currentMillis - previousMillis > interval) {}
de laatste tijd u de LED knipperde besparen
previousMillis = currentMillis;
Als de LED is uit te schakelen het op en vice-versa:
Als (ledState == laag)
{
ledState = hoog;
}
anders
{
ledState = laag;
}
de LED met de ledState van de variabele instellen
digitalWrite (powerLED, ledState);
}
}
Als (digitalRead(SWITCH) == LOW) {//read switch input
Shoot(video); starten of stoppen van de video-opname
Als (uitgevoerd == false) //detect de stand van de opname en het omkeren
{
actief = true;
}
anders
{
actief =! uitgevoerd;
digitalWrite (powerLED, hoge);
}
piezoBeep(); piep de zoemer om aan te geven dat de opname is gestart of gestopt
delay(500);
}
}
VOID schieten (unsigned int delayBetweenBursts) {//sends het IR signaal
Stuur eerst 16 uitbarstingen
for (int i = 0; ik < 16; i ++) {}
digitalWrite (irLED, hoge);
delayMicroseconds(pulseDuration);
digitalWrite (irLED, laag);
delayMicroseconds(pulseDuration);
}
delayMicroseconds(delayBetweenBursts);
verzenden tweede 16 uitbarstingen
for (int i = 0; ik < 16; i ++) {}
digitalWrite (irLED, hoge);
delayMicroseconds(pulseDuration);
digitalWrite (irLED, laag);
delayMicroseconds(pulseDuration);
}
terugkeer;
}
VOID piezoBeep() {//beeps de piëzo-zoemer, eenmaal voor start van opname, twee keer voor het einde van de opname
Als (uitgevoerd == true)
{
digitalWrite (buzzPin, hoge);
delay(250);
digitalWrite (buzzPin, laag);
}
anders
{
digitalWrite (buzzPin, hoge);
delay(250);
digitalWrite (buzzPin, laag);
delay(100);
digitalWrite (buzzPin, hoge);
delay(250);
digitalWrite (buzzPin, laag);
}
}