Paso 7: Programación de Arduino
Para probar la teoría disparó una serie de cuadros con el mismo retraso y eran todos muy similares. También nos dimos cuenta de que, por eliminar el potenciómetro y cualquier comunicación con el ordenador portátil, los cuadros eran más similares-como dos gotas de agua!
Para probar la teoría disparó una serie de cuadros con el mismo retraso y eran todos muy similares. También nos dimos cuenta de que, por eliminar el potenciómetro y cualquier comunicación con el ordenador portátil, los cuadros eran más similares-como dos gotas de agua! Luego limpiar el código y agrega algunas ideas para hacer el sistema más fiable, como la adición de un milisegundo después de cada 1000 microsegundos para el Arduino manejar tales cantidades grandes de figuras.
CÓDIGO:
"Entropía máquina" para la revista IDN por Physalia. Codificadas por Jordi Planas & Pablo Barquin
#include < Servo.h >
int flash1 = 9; Patillas del Flash 1 9
flash2 INT = 12; Patillas del Flash 2 11
láser de int = 2; PIN del fotodiodo
camara int = 3; Perno del optoacoplador donde se conecta la camara
int boton1 = 7; Boton de disparo de foto
int boton2 = 13; Boton de repetición de foto (sin incrementar)
clic1 boolean = false; Buleano para el boton 1
clic2 boolean = false; Buleano para el boton 2
Boolean laserState = false; Buleano del láser
int i = 1; Variable que cuenta las gotas (primera o segunda)
Servo1 servo; Crea un Objeto servo
int f = 0; Numero de fotos para depurar
////////////////////////// TIEMPOS //////////////////////////////////////////////////////////////////////////////
int retardo = 0; Espera en milisegundos para la primera foto
delaim int = 0; Retraso inicial al se le suma el incremento
int incremento = 250; Incremento en microsegundos
int guardarfoto = 4000; Espera de la camara para guardar la foto
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {}
Serial.Begin(9600); Activar para hacer DEBUG
pinMode (flash1, salida);
pinMode (flash2, salida);
pinMode (láser, entrada);
pinMode (camara, salida);
pinMode(boton1,INPUT);
pinMode(boton2,INPUT);
servo1.Attach(6);
servo1.Write(0); Posición inicial del servo
}
void loop() {}
botones();
Si (clic1 == true) {//Si el boton esta pulsado
lecturalaser(); 3.ejecutamos la funcion lecturalaser
}
{//Si el boton NO esta pulsado
} //No ocurre nada
}
void lecturalaser() {}
laserState = digitalRead(laser);
Si (laserState == HIGH) {//Si el laser no esta interrumpido
} //No ocurre nada
Else {//Si el láser se interrumpe (bajo)
foto(); Se ejecuta la funcion foto
}
}
{} void botones()
int dclic1 = digitalRead(boton1);
int dclic2 = digitalRead(boton2);
{if(dclic1==High)}
clic1 = true;
}
{if(dclic2==High)}
clic2 = true;
}
}
void foto() {}
Si (i == 1) {//Si solo ha pasado una gota por el láser
Delay(20); Debounce del láser
digitalWrite (camara alta); Empezamos a obturar con la camara
i = i ++; Sumamos 1 a i para que dispare a la segunda gota
}
else { //Si i = 2
disparo(); 3.ejecutamos la funcion disparo
i = 1; me vuelver a valer 1
}
}
void disparo() {}
Si (clic2 == true) {//Si el boton 2 ha sido pulsado
Delay(delai); Esperamos "retardo"
delayMicroseconds(delaim); Esperamos el incremento en Microsegundos
Flasheo(); 3.ejecutamos flasheo
}
Else {//Si el boton 2 NO ha sido pulsado
incrementar(); Incrementamos la espera ejecutando la funcion incrementar
Delay(delai); Esperamos "retardo"
delayMicroseconds(delaim); Esperamos el incremento en Microsegundos
Flasheo(); 3.ejecutamos flasheo
Motion(); Movemos la movimiento
}
}
void flasheo() {}
digitalWrite (flash1, HIGH); Disparamos de destello de 1
digitalWrite (flash2, HIGH); Disparamos de destello 2
Delay(10); Le damos tiempo al flash mientras recibe un impulso
digitalWrite (camara baja);
digitalWrite (flash1, LOW); Apagamos el flash 1
digitalWrite (flash2, LOW);
clic1 = false; Quitar si queremos las gotas automaticas
clic2 = false;
/*f = f++;
Serial.println ("retardo Inicial:"); DE DEPURACIÓN
Serial.println(delai);
Serial.println ("Microsegundos de retraso:");
Serial.println(delaim);
Serial.println ("Numero de fotos:");
Serial.println(f); */
}
void motion() {}
Delay(300);
servo1.Write(90);
Delay(100);
servo1.Write(0);
/*
Serial.println("Motion"); DE DEPURACIÓN
Serial.println("esperando");
Delay(guardarfoto); Esperamos a la camara guarde la foto
Serial.println("listo!!!"); */
}
void incrementar() {}
delaim += incremento;
Si {} (delaim > 1000)
delaim = delaim -1000;
retardo = retardo ++;
}
}