Disparador para Réflex – Parte 2

Este es un post de continuación al post Disparador para Réflex – Parte 1:

Ya conocemos un componente que sirve de
interruptor y que podemos controlar electrónicamente, el relé. En este caso vamos a utilizar otro elemento,
un optoacoplador, con el mismo objetivo: sustituir al botón que pulsábamos en
el ejemplo anterior.

El optoacoplador se compone de un fotodiodo y
un fototransistor; al pasar corriente por el diodo, le llega luz a la base del
transistor y éste conduce. Desde fuera, veremos un encapsulado con cuatro
terminales. Si hacemos que pase corriente entre las patillas del fotodiodo, los
otros dos terminales estarán cortocircuitos.

Como en otros tutoriales, necesitaremos una Protoboard.
Podemos conectar la patilla 2 a masa y la
patilla 1 a un pin del Arduino que configuremos como salida. Comprueba en el
datasheet de tu optoacoplador que la corriente máxima que soporta el diodo sea
lo suficientemente elevada para no quemarse y si no lo es, añádele una
resistencia entre el pin y la patilla 1. La patilla 4 irá unida al terminal que
queramos llevar a masa, que estará en el terminal 3
.

Por lo tanto, ya tenemos una forma de provocar
que la cámara enfoque/dispare
con sólo poner un pin a nivel alto. Si además
disponemos de un mando de infrarrojos, ya tenemos una forma de disparar de
forma inalámbrica.

Con todo esto, pasamos a la descripción del
circuito completo:

Componentes:

– 1 cable Jack 2.5 mm macho a 3.5 mm macho

– 1 conector Jack 3.5 mm hembra

– 2 optoacopladores (uno para enfoque y otro
para disparo)

Sensor de infrarrojos + mando

El sketch de nuestro ejemplo es el siguiente:

#include <Arduino.h>
#include <NECIRrcv.h>

//pines
#define IRPIN 11   // pin al que conectamos el receptor de IR
#define focus 9
#define shutter 7

//botones
#define boton1 4010852096
#define boton2 3994140416
#define boton3 3977428736

NECIRrcv ir(IRPIN) ;

int i;

//parámetros Time-lapse
int msTimeLapse=3000;
int NumFotos=3;


// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  Serial.begin(9600) ;
  pinMode(shutter, OUTPUT);
  pinMode(focus, OUTPUT);
  Serial.println("Modos:");Serial.println("1: Enfocar");Serial.println("2: Hacer foto");Serial.println("3: Time-lapse");
  ir.begin() ;
}


// the loop routine runs over and over again forever:
void loop() {
  unsigned long ircode ;
  while (ir.available()) { 
    ircode = ir.read() ;  
    switch(ircode)
    {    
      case boton1:   Serial.println("Enfocando"); //Focus con UP
                     digitalWrite(focus, HIGH);
                     delay(500);
                     digitalWrite(focus, LOW);
                     break;
                     
      case boton2:   Serial.println("Foto"); 
                     digitalWrite(shutter, HIGH);
                     delay(400);
                     digitalWrite(shutter, LOW);
                     break;
         
      case boton3:   Serial.println("Time-lapse");
                     for(i=1;i<=NumFotos;i++){
                       digitalWrite(shutter, HIGH);
                       delay(100);
                       digitalWrite(shutter, LOW);
                       delay(msTimeLapse-100);}
                     break;
     }//end switch    
  }//end while
}

Nota: si tienes problemas con las librerías de NECIRrcv, en concreto, con
WConstants.h, haz lo siguiente.

-Abre
NECIRrcv.cpp y borra la línea #include «WProgram.h»

-Abre
NECIRrcv.h y sustituye la línea #include «WConstants.h» por #include
«Arduino.h”

Probablemente tengas que revisar los #define
de los botones para ponerles el valor que envíe tu mando. Para saber estos
valores simplemente carga el sketch de aquí (https://www.elcajondeardu.com/2014/02/utilizacion-mando-infrarrojos-i-lectura.html#more)
y mira el monitor Serial al pulsar los botones que te interesen.

Funcionamiento:

Botón 1: enfocar

Botón 2: hacer foto

Botón 3: modo time-lapse, configurable con los
parámetros NumFotos (número de fotos del time-lapse) y msTimeLapse (intervalo
de tiempo entre fotos en ms).

Recuerda que el Arduino guarda el último
sketch que hayas cargado desde el ordenador y que puedes alimentarlo con pilas
,
por lo tanto, tu intervalómetro puede ser totalmente portátil.

Con esto hemos realizado lo básico, como hemos
comentado al principio, puedes hacer que tu disparador se ajuste a lo que
necesites para tu cámara con sólo cambiar o añadir unas pocas líneas de código
o algún componente más.

Por ejemplo, estas son algunas de nuestras ideas
para añadir funcionalidades:

-Un modo que dispare un par de segundos después
de pulsar un botón, para poder esconder el mando y no salir con él en la mano.

-Hacer que el número de fotos del time lapse y
el intervalo de tiempo entre fotos sea ajustable; se podría hacer mediante un
LCD para mostrar los parámetros y pulsadores para incrementar y decrementar
valores.

-Barreras de luz: la cámara disparará cuando
se interrumpa el haz de luz entre dos puntos.

-Conectar dispositivos inalámbricamente al
Arduino para controlar la cámara, por ejemplo desde el móvil vía Bluetooth.

En resumen, con unos pocos componentes simples
y económicos y nuestro Arduino podemos conseguir muchas nuevas funciones que
nos ayuden a aprovechar nuestra cámara.

Recuerda que algo tan sencillo como programar
tu intervalómetro y dejar un rato la cámara mirando hacia arriba puede acabar
dando resultados como este:

Anímate a construir tu intervalómetro
inalámbrico y no dudes en dejarnos tus dudas o tus ideas en los comentarios.

Un saludo,

J.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.