Cómo hacer fotografía Time-lapse inteligente controlado por Arduino (3 / 4 paso)

Paso 3: Escribir el código

Este es mi código.  No dude en jugar con diferentes parámetros para adaptarse a su aplicación y comentar si quieres que me explique nada.

Instalar el IDE de Arduino desde arduino.cc si no ya lo tienes.  Abrir un dibujo nuevo y pega este código en.  Compilarlo, subirlo y probarlo.

/*

Fotografía Time-lapse dinámica sensible a la luz y ajustable

Este programa y circuito están diseñados para controlar la fotografía Time-lapse
es controlable y en respuesta a niveles de luz ambiente.
La iluminación en sesiones de fotos de amanecer y atardecer a veces puede ser difícil
anticipar, así que en vez de acabar con cientos de totalmente negro
imágenes, un fotorresistor Sensa niveles de luz y por consiguiente se detiene o comienza
la fotografía. Un potenciómetro permite ajustar el retardo entre
fotografías y una pantalla de siete segmentos de varios dígito muestra la corriente
valor de retraso.

Este circuito está diseñado para ser utilizado con un obturador alejado infrarrojo. Me
esta diseñado para una Nikon D3100, pero ningún otro DSLR con un mando a distancia debe
funciona igual de bien. En este circuito, un LED en la actualidad actúa como suplente para
el obturador, pero adaptando para el obturador es sólo una cuestión de pasar por
el botón en el mando y control con el Arduino. Puesto que
es difícil decir cuando se activa un transmisor infrarrojo,
los destellos de la pantalla de siete segmentos cada vez se toma una fotografía para informar a la
usuario de su progreso.

Puesto que muchos entusiastas de Time-lapse están interesados en la adición de un elemento dinámico
a las vacunas, incluí la funcionalidad para un aparejo con servomando
que podría permitir a la cámara girar o pan en una escena.

El circuito:
* El display de siete segmentos es controlado por los pines 2-8 y 10-12. La pantalla
funciona usando cada dígito como un terreno y cada segmento como una entrada positiva.
Por ejemplo, para mostrar un segmento A en el número 3, el Arduino configurar pin 2,
que controla el segmento al alta y pin 12, que es la base para el número 3,
a la baja.

* El LED y obturador alejado, está conectado al pin 13 y GND.

* El servo conectado a 5V y GND y recibe la señal del pin 9.

* La fotorresistencia utilizado en un circuito de división de tensión junto con un 10kΩ
resistencia y se lee por el pin A0.

* El potenciómetro se lee por el pin A1

Agradecimientos:
Instructables de FireCGun publican en "Pantalla de Arduino 4 dígitos 7 segmentos"

09 de diciembre de 2013
por Holden Leslie-Bole

Declaro este código del dominio público.

*/

#include < Servo.h > / / incluye la librería servo
Servo cameraServo; Crea un objeto servo llamado cameraServo
const int potPin = A1; Configurar pin analógico A1 leer el potenciómetro
const int photoresistorPin = A0; Configurar pin analógico A0 leer el fotoresistor
int potValue = 0;
Inicializar potValue, la variable que almacena el valor del potenciómetro, a cero
int photoresistorValue = 0;
Inicializar photoresistorValue, la variable que almacena el valor de la fotorresistencia, a cero
int shutterDelay = 0; Esta variable almacena el retardo introducido por el usuario entre fotos
lastPicTime largo = 0; El tiempo en que se tomó la última foto
lastServoTime largo = 0; El tiempo en el cual el servo última
timeLapseDuration largo = 900000;
Para la calibración de servo - la duración prevista de la sesión (en milisegundos)
int servoPosition = 0; Posición del servo en grados

Esta sección asigna números a los diferentes elementos en la pantalla
const int aPin = 2;
const int bPin = 3;
const int cPin = 4;
const int trabajo = 5;
const int ePin = 6;
const int fPin = 7;
const int gPin = 8;
const int GND1 = 10;
const int GND2 = 11;
const int GND3 = 12;

const int shutterPin = 13; PIN 13 controla el obturador
int num; El número introducido por el potenciómetro
int dig2Value = 0;
int dig3Value = 0;
int brightnessDelay = 3; Un retraso de cantidad arbitraria que controla el brillo de la pantalla

Ejecutar este método una vez cuando empieza a Arduino
void setup()
{
cameraServo.attach(9); Asignar el servo al pin 9
cameraServo.write(0); Inicializar el servo en 0
Ajustar las clavijas pantalla y obturador de salida
pinMode (aPin, salida);
pinMode (bPin, salida);
pinMode (cPin, salida);
pinMode (trabajo, salida);
pinMode (ePin, salida);
pinMode (fPin, salida);
pinMode (gPin, salida);
pinMode (GND1, salida);
pinMode (GND2, salida);
pinMode (GND3, salida);
pinMode (shutterPin, salida);
Serial.Begin(9600); Esto es un poco útil de mantener para pruebas y depuración de código
}

Ejecutar este método continuamente
void loop()
{
currentTime larga sin signo = millis(); Seguimiento de cuánto tiempo el Arduino ha sido Running
potValue = analogRead(potPin); Leer el potenciómetro y guardarlo en potValue
Num = mapa (potValue, 0, 1023, 0, 99); Ajustar el rango de salida para ajustar el retardo
shutterDelay = num * 1000;
Como medida del tiempo natural de Arduino es en milisegundos, esto convierte num
en un retraso entre fotos en milisegundos
dig2Value = num / 10; Utilizar el truncamiento entero para hacer dig2Value los diez dígitos
dig3Value = num - (dig2Value * 10); Aritmética proporciona las cifras

Establecer los motivos de alta
digitalWrite (GND1, alto);
digitalWrite (GND2, alto);
digitalWrite (GND3, alto);

Mostrar una d retraso en dígitos uno
digitalWrite (GND1, LOW); Convertirlo
d(); Ver método void d()
Delay(brightnessDelay); Espere 3 ms por lo que se puede ver
digitalWrite (GND1, alto); Lo apague

digitalWrite (GND2, LOW);
Number(dig2Value); Vea number(int i) (método)
Delay(brightnessDelay);
digitalWrite (GND2, alto);

digitalWrite (GND3, LOW);
Number(dig3Value); Vea number(int i) (método)
Delay(brightnessDelay);
digitalWrite (GND3, alto);

servoPosition = cameraServo.read();
La servoPosition ser lo que es actualmente es en grados

photoresistorValue = analogRead(photoresistorPin); Leer el fotoresistor
if(photoresistorValue > 100)
Probar diferentes valores para ello. Opté por 100 sólo basada en la experimentación.
{
Si (currentTime - lastPicTime > shutterDelay)
Evaluar si ha transcurrido el retardo de obturador desde la última captura
{
Tomar la fotografía
digitalWrite (shutterPin, HIGH);
lastPicTime = currentTime;
Delay(200);
digitalWrite (shutterPin, bajo);
}

Evaluar la actividad de servo
Si (currentTime - lastServoTime > timeLapseDuration/180 & & servoPosition < 180)
{
servoPosition ++;
cameraServo.write(servoPosition); Mover el servo
lastServoTime = currentTime;
}
}
}

Este método utiliza notación de switch/case para llamar a los métodos de los dígitos en respuesta a un número entero de entrada
void number(int i) {}
{Switch(i)}
caso 1: one();
rotura;
caso 2: two();
rotura;
caso 3: three();
rotura;
caso 4: four();
rotura;
caso 5: five();
rotura;
caso 6: six();
rotura;
caso 7: seven();
rotura;
caso 8: eight();
rotura;
caso 9: nine();
rotura;
default: zero();
rotura;
}
}

Este método muestra la d retraso
d() vacío
{
digitalWrite (aPin, LOW);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, HIGH);
digitalWrite (fPin, LOW);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito uno
void one()
{
digitalWrite (aPin, LOW);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, LOW);
digitalWrite (ePin, LOW);
digitalWrite (fPin, LOW);
digitalWrite (gPin, LOW);
}

Este método muestra el dígito dos
void two()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, LOW);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, HIGH);
digitalWrite (fPin, LOW);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito tres
void three()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, LOW);
digitalWrite (fPin, LOW);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito cuatro
void four()
{
digitalWrite (aPin, LOW);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, LOW);
digitalWrite (ePin, LOW);
digitalWrite (fPin, HIGH);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito cinco
void five()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, LOW);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, LOW);
digitalWrite (fPin, HIGH);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito seis
void six()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, LOW);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, HIGH);
digitalWrite (fPin, HIGH);
digitalWrite (gPin, HIGH);
}

void seven()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, LOW);
digitalWrite (ePin, LOW);
digitalWrite (fPin, LOW);
digitalWrite (gPin, LOW);
}

Este método muestra el dígito ocho
void eight()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, HIGH);
digitalWrite (fPin, HIGH);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito nueve
void nine()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, LOW);
digitalWrite (fPin, HIGH);
digitalWrite (gPin, HIGH);
}

Este método muestra el dígito cero
void zero()
{
digitalWrite (aPin, HIGH);
digitalWrite (bPin, HIGH);
digitalWrite (cPin, HIGH);
digitalWrite (trabajo, HIGH);
digitalWrite (ePin, HIGH);
digitalWrite (fPin, HIGH);
digitalWrite (gPin, LOW);
}

Artículos Relacionados

Casa inteligente controlada por Arduino

Casa inteligente controlada por Arduino

Este instructivo fue escrito por el evangelista PubNub Ian Jennings . Historia de Ian camina a través de su proceso de construcción de un modelo de casa inteligente controlado por Arduino desde cero.--En septiembre, nuestro fundador Stephen y yo está
Módulo Arduino para fotografía Time-lapse

Módulo Arduino para fotografía Time-lapse

ya hay muchos instructables en fotografía Time-lapse.Una manera fácil de hacer tiempo lapso fotografía es para adaptar un dispositivo foto vieja soldando los cables en su botón principal.Este es un instructivo que muestra cómo hacerlo:Entonces para t
Fotografía Time-lapse de procesamiento usando GIMP

Fotografía Time-lapse de procesamiento usando GIMP

después de tomar varias fotografías de nubes fuera de mi casa, me di cuenta de que estaban en casi la misma dirección. Por verlas en rápida sucesión, casi parecían una animación de cuadro por cuadro Time-lapse. Decidí convertirlo en un archivo .gif a
Fotografía Time-lapse

Fotografía Time-lapse

Hacking una vieja cámara digital para tomar secuencias de fotografía Time-lapse es divertido y fácil. Todo lo que necesitas es algunos conocimientos de electrónica básica y un poco de paciencia.Estoy utilizando un Arduino (Junta de desarrollo de Atme
Cómo hacer un hermoso Time lapse

Cómo hacer un hermoso Time lapse

en este Instructable mostrará usted cómo tomar un increíble Time-lapse.Te digo sobre los ajustes y mejores condiciones de viento.1. por favor ver el Video de Time-lapse arriba a ver si esto es lo que buscas.1.5. necesita una función de Time-lapse en
Teléfono inteligente controlado por tanque de Arduino usando Annikken Andee

Teléfono inteligente controlado por tanque de Arduino usando Annikken Andee

Hola chicos, soy Robin, uno de los desarrolladores de Annikken Andee. Apenas unas semanas atrás fuimos invitados a ser parte de Arduino día Singapur 2014. En el día del evento, nos mostró un smartphone lego de la trituración de disparos de misiles ta
Un modelo de casa inteligente controlado por Smartphone

Un modelo de casa inteligente controlado por Smartphone

Mediante el uso de pensador y el interruptor de retroalimentación, este modelo de casa puede controlarse con el Smartphone. Casa inteligente ahora!!!!!!Paso 1: Pensador e interruptor de retroalimentación Pensador, un host de control inteligente con f
Cómo hacer un Robot de 2 ruedas, controlado por infrarrojos, compatible con Arduino

Cómo hacer un Robot de 2 ruedas, controlado por infrarrojos, compatible con Arduino

Es este instructable sobre cómo usted puede hacer su propio robot para que:-Es controlado por un control remoto IR-Son capaces de acceder y modificar el código para el contenido de su corazón-Usted puede cambiar el robot chassy a cualquier tamaño o f
Teléfono inteligente controlado por luz del humor RGB

Teléfono inteligente controlado por luz del humor RGB

Estado de ánimo son siempre fascinantes para mí y es un muy buen proyecto para empezar empezar con Arduino.¿Qué es una lámpara de estado de ánimo?Lámparas de estado de ánimo son dispositivos de iluminación que se utilizan para establecer un determina
Termostato inteligente controlado por amortiguador de conducto HVAC

Termostato inteligente controlado por amortiguador de conducto HVAC

IntroducciónEn este artículo será controlar el flujo de calor o aire acondicionado para una habitación. Permite decir tiene una habitación, como un dormitorio de repuesto, que no utilices a menudo. ¿Realmente necesita a lo largo del año 75 grados com
IntelliVent - la ventilación inteligente controlado por api REST

IntelliVent - la ventilación inteligente controlado por api REST

El termostato Nest fue un salto en el climatizador de casa automatizada.Sin embargo te has preguntado ¿por qué usted necesita para calentar o enfriar habitaciones desocupadas, como la cocina o la oficina durante la noche? IntelliVent es una ventilaci
Teléfono inteligente controlado por luz del humor

Teléfono inteligente controlado por luz del humor

Este tutorial te enseña cómo hacer un humor ligero que puedes cambiar color y la intensidad de uso de tu iPhone.Vamos a utilizar La haba azul claro para el control de las luces. El LightBlue Bean es un Arduino microcontrolador compatible con Bluetoot
Simple cámara Dolly para Time-lapse fotografía

Simple cámara Dolly para Time-lapse fotografía

Como fotógrafo aficionado, me gusta tomar fotografías de las luces del norte. Sin embargo, todavía la imágenes no pueden representar la dinámica de la aurora. Para resolver este problema, decidí hacer vídeos Time-lapse de las luces. Resultó gran pero
Aprender fotografía en ningún momento plana de Time-lapse

Aprender fotografía en ningún momento plana de Time-lapse

en este Instructable, le mostraré cómo hacer su propio vídeo Time-lapse.También comparto consejos útiles que he aprendido de las experiencias.Aquí está un video de algunos de los lapsos que hizo mi amigo y yo:Por Wikipedia, está haciendo fotografía T