Stap 7: Arduino programmering
Om de theorie te testen we een aantal foto's met de dezelfde vertraging geschoten en ze waren allemaal zeer vergelijkbaar. We beseften ook dat, door het wegwerken van de potentiometer en elke communicatie met de laptop, de foto's meer en meer soortgelijke-achtige twee druppels water werden!
Om de theorie te testen we een aantal foto's met de dezelfde vertraging geschoten en ze waren allemaal zeer vergelijkbaar. We beseften ook dat, door het wegwerken van de potentiometer en elke communicatie met de laptop, de foto's meer en meer soortgelijke-achtige twee druppels water werden! Vervolgens de code gereinigd en voegde een aantal ideeën om het systeem betrouwbaarder, zoals het toevoegen van een milliseconde na elke 1000 microseconden om te helpen de Arduino beheren van dergelijke grote hoeveelheden cijfers.
CODE:
"Entropie Machine" voor IDN Magazine door Physalia. Gecodeerd door Jordi Planas & Pablo Barquin
#include < Servo.h >
int flash1 = 9; PIN del Flash 1 pin 9
int flash2 = 12; PIN del Flash 2 pin 11
int laser = 2; PIN del fotodiodo
int camara = 3; PIN del optoacoplador donde se conecta la camara
int boton1 = 7; Boton de disparo de foto
int boton2 = 13; Boton de repeticion de foto (geen incrementar)
Boole clic1 = false; Buleano para el boton 1
Boole clic2 = false; Buleano para el boton 2
Boole laserState = false; Buleano del laser
int i = 1; Variabele que cuenta las gotas (primera o segunda)
Servo servo1; Crea un Objeto servo
int f = 0; Numero de fotos para DEBUG
////////////////////////// TIEMPOS //////////////////////////////////////////////////////////////////////////////
int delai = 0; Espera nl milisegundos para la primera foto
int delaim = 0; Vertraging inicial al que se le suma el incremento
int incremento = 250; Incremento nl microsegundos
int guardarfoto = 4000; Espera de la camara para guardar la foto
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
VOID Setup {}
Serial.begin(9600); Activar para hacer DEBUG
pinMode (flash1, OUTPUT);
pinMode (flash2, OUTPUT);
pinMode (laser, INPUT);
pinMode (camara, OUTPUT);
pinMode(boton1,INPUT);
pinMode(boton2,INPUT);
servo1.attach(6);
servo1.write(0); //Posicion inicial del servo
}
void loop {}
botones();
Als (clic1 == true) {//Si el boton esta pulseren
lecturalaser(); Ejecutamos la opstelplaats lecturalaser
}
{//Si el boton geen esta pulseren
} //No wordt nada
}
ongeldig lecturalaser() {}
laserState = digitalRead(laser);
Als (laserState == HIGH) {//Si el laser geen esta interrumpido
} //No wordt nada
else {//Si el laser se interrumpe (laag)
foto(); Se ejecuta la opstelplaats foto
}
}
ongeldig botones() {}
int dclic1 = digitalRead(boton1);
int dclic2 = digitalRead(boton2);
if(dclic1==High) {}
clic1 = true;
}
if(dclic2==High) {}
clic2 = true;
}
}
ongeldig foto() {}
Als (ik == 1) {//Si reizigers ha pasado una gota por el laser
vertraging(20); Ontdendering del laser
digitalWrite (camara, hoge); Empezamos een obturar con la camara
Ik = i ++; Sumamos 1 a, i para que dispare a la segunda gota
}
else { //Si i = 2
disparo(); Ejecutamos la opstelplaats disparo
Ik = 1; Ik vuelver een valer 1
}
}
ongeldig disparo() {}
Als (clic2 == true) {//Si el boton 2 ha sido pulseren
delay(Delai); Esperamos "delai"
delayMicroseconds(delaim); Esperamos el incremento nl Microsegundos
flasheo(); Ejecutamos flasheo
}
else {//Si el boton 2 NO ha sido pulseren
incrementar(); Incrementamos la espera ejecutando la opstelplaats incrementar
delay(Delai); Esperamos "delai"
delayMicroseconds(delaim); Esperamos el incremento nl Microsegundos
flasheo(); Ejecutamos flasheo
Motion(); Movemos la beweging
}
}
ongeldig flasheo() {}
digitalWrite (flash1, hoge); Disparamos el flash 1
digitalWrite (flash2, hoge); Disparamos el flash 2
delay(10); Le damos tiempo al flash mientras búsqueda un impulso
digitalWrite (camara, laag);
digitalWrite (flash1, laag); Apagamos el flash 1
digitalWrite (flash2, laag);
clic1 = false; Quitar si queremos las gotas automaticas
clic2 = false;
/*f = f++;
Serial.println ("vertraging Inicial:"); DEBUG
Serial.println(Delai);
Serial.println ("vertraging Microsegundos:");
Serial.println(delaim);
Serial.println ("Numero de fotos:");
Serial.println(f); */
}
ongeldig motion() {}
delay(300);
servo1.write(90);
delay(100);
servo1.write(0);
/*
Serial.println("Motion"); DEBUG
Serial.println("Esperando");
delay(guardarfoto); Esperamos een que la camara garde la foto
Serial.println("LISTO!!!"); */
}
ongeldig incrementar() {}
delaim += incremento;
Als (delaim > 1000) {}
delaim = delaim-1000;
Delai = delai ++;
}
}