Paso 4: Código de Arduino
Aquí está el código de Arduino para que todo funcione.Crédito para el código de control remoto IR va a http://controlyourcamera.blogspot.com/ Martin Koch con su gracias a http://www.doc-diy.net/photo/rc-1_hacked/index.php para averiguar el código de infrarrojos.
El código está bien comentado, pero la idea general es esta:
-El pasador del interruptor está preparado para abrir estado de entrada de alta, esto es el pasador a que del disparador RF se une.
-El estado de los LED de alimentación está establecido en alto, y el bucle de relojes para un cambio de no corriente a corriente. Si esto ocurre, el LED parpadea (mientras que el video está siendo filmado) y viceversa, una vez que la grabación se detiene, el LED vuelve a sólido.
-Arduino busca el pasador del interruptor sea tirada baja, indicando que el gatillo ha sido presionado.
-Una vez que esto ocurre, dispara la secuencia de vídeo de Start/stop para el LED IR.
-El vídeo estado de funcionamiento es conjunto o.
-El zumbador piezoeléctrico emite un pitido (una vez por inicio, dos veces para parar)
Simple como eso.
El código de parpadeo de LED fue escrito de una muestra de código que encontré que permite el LED parpadeando sin utilizar el delay(); función que no presiona ningún botón se perdió durante un retraso en el lazo. Una pequeña demora se escribe en la función de zumbador piezo porque esto se activa inmediatamente después de la grabación se detiene o comienza y no se ejecuta continuamente.
No tengo un programador AVR, usé mi Arduino para escribir el código en el chip atmega328 que tenía simplemente por tirar el chip stock fuera mi Arduino, insertando el chip estaba utilizando para este proyecto, escrito el código y cambiar hacia fuera otra vez.
Aquí está el código (también Unido en una. Archivo TXT, cambiar el nombre a .pde):
/* Modificado por JustinHerx para aceptar la entrada de un control remoto (por cable e inalámbrico) y el const int irLED = 11; unsigned int pulseDuration = 10; microsegundos Foto de unsigned int = 7330; Un retraso de 7330 microsegundos entre ráfagas dispara una foto. void setup() {}
Basado en sketch de Arduino para simular un mando a distancia Canon RC-1 IR para iniciar y detener la grabación de vídeo en una Canon 5D Mark II y 7D
2010, Martin Koch
http://controlyourcamera.blogspot.com/
Enorme agradecimiento a http://www.doc-diy.net/photo/rc-1_hacked/index.php para averiguar el código de infrarrojos.
salida en un comando IR para activar/desactivar la grabación de vídeo en una Canon 5D MII, 7D, 60D, etc..
Piezas necesarias:
-Arduino
-Energía LED (o interruptor con LED de potencia, estoy usando un interruptor pulsador iluminado de RadioShack # 275-0009)
-Piezoeléctrico zumbador (RadioShack #273-059)
-jack 2, 5 mm para conectar el disparador de la cámara
-IR LED cámara de gatillo
-Resistencia para LED
*/
const int interruptor = 7;
const int buzzPin = 8;
const int powerLED = 4;
funcionamiento boolean = false;
int ledState = alto; ledState permite configurar el LED
previousMillis largo = 0; almacenará la última vez actualizó a LED
largo intervalo = 200; intervalo en el que a parpadear (milisegundos)
El pulseDuration 15 microsegundos requeridos no funcionaba desde digitalWrite consume tiempo adicional
eso agrega valor pulseDuration. a mi me funciono 10 a 12 microsegundos.
unsigned int video = 5360; Un retraso de microsegundos 5360 entre ráfagas inicia/detiene el vídeo grabación.
Serial.Begin(9600); Sin comentarios para la depuración
pinMode (irLED, salida);
pinMode (interruptor, entrada);
pinMode (buzzPin, salida);
pinMode (powerLED, salida);
digitalWrite (interruptor, alto); Encienda interno 20 resistencia de pullup de k para que el estado abierto de entrada es alta.
digitalWrite (buzzPin, bajo);
digitalWrite (powerLED, HIGH);
}
void loop() {//run una y otra vez
Si (ejecutando == true) / / esta parte del bucle es probar si se ha disparado la cámara para grabar
y parpadea LED de la alimentación durante la grabación.
{
Serial.Print("Running"); Sin comentarios para la depuración
Serial.println();
unsigned currentMillis largo = millis();
Si (currentMillis - previousMillis > intervalo) {}
guardar la última vez que titilaba el LED
previousMillis = currentMillis;
Si el LED está apagado gire sobre y viceversa:
Si (ledState == LOW)
{
ledState = alto;
}
otra cosa
{
ledState = bajo;
}
Set el LED con la ledState de la variable:
digitalWrite (powerLED, ledState);
}
}
Si (digitalRead(SWITCH) == LOW) {//read entrada
Shoot(video); iniciar o detener la grabación de vídeo
Si (ejecutando == false) //detect el estado de la grabación e inviértala
{
correr = true;
}
otra cosa
{
correr =! funcionando;
digitalWrite (powerLED, HIGH);
}
piezoBeep(); pitido en el zumbador para indicar que la grabación ha iniciado o detenido
Delay(500);
}
}
lanzamiento nulo (unsigned int delayBetweenBursts) {//sends la IR señal
enviar primero 16 ráfagas
para (int i = 0; i < 16; i ++) {}
digitalWrite (irLED, HIGH);
delayMicroseconds(pulseDuration);
digitalWrite (irLED, LOW);
delayMicroseconds(pulseDuration);
}
delayMicroseconds(delayBetweenBursts);
enviar ráfagas segundo 16
para (int i = 0; i < 16; i ++) {}
digitalWrite (irLED, HIGH);
delayMicroseconds(pulseDuration);
digitalWrite (irLED, LOW);
delayMicroseconds(pulseDuration);
}
retorno;
}
void piezoBeep() {//beeps el zumbador piezoeléctrico, una vez por inicio de grabación, dos veces para el final de la grabación
Si (ejecutando == true)
{
digitalWrite (buzzPin, HIGH);
Delay(250);
digitalWrite (buzzPin, bajo);
}
otra cosa
{
digitalWrite (buzzPin, HIGH);
Delay(250);
digitalWrite (buzzPin, bajo);
Delay(100);
digitalWrite (buzzPin, HIGH);
Delay(250);
digitalWrite (buzzPin, bajo);
}
}