Étape 7: Programmation Arduino
Pour tester la théorie, nous avons tourné un certain nombre de photos avec le même retard et ils étaient tous très similaires. Nous avons aussi réalisé que, en se débarrassant du potentiomètre et toute communication avec l’ordinateur portable, les photos étaient plus semblables comme deux gouttes d’eau !
Pour tester la théorie, nous avons tourné un certain nombre de photos avec le même retard et ils étaient tous très similaires. Nous avons aussi réalisé que, en se débarrassant du potentiomètre et toute communication avec l’ordinateur portable, les photos étaient plus semblables comme deux gouttes d’eau ! Puis, nous avons nettoyé le code et ajouté quelques idées pour rendre le système plus digne de confiance, comme l’ajout d’une milliseconde après chaque microsecondes de 1000 pour l’Arduino gérer ces grandes quantités de chiffres.
CODE :
« Machine d’entropie » pour IDN Magazine de Physalia. Codé par Jordi Planas & Pablo Barquin
#include < Servo.h >
flash1 int = 9 ; Del Flash 1 broche 9
flash2 int = 12 ; Del Flash 2 broche 11
laser int = 2 ; Fotodiodo del pin
camara int = 3 ; Broche del optoacoplador donde se conecta la camara
int boton1 = 7 ; Boton de disparo de foto
int boton2 = 13 ; Boton de repeticion de foto (aucun incrementar)
clic1 booléen = false ; Buleano para el boton 1
clic2 booléen = false ; Buleano para el boton 2
laserState booléen = false ; Buleano del laser
int i = 1 ; Variable que cuenta las gotas (primera o segunda)
Servo servo1 ; Crea un Objeto servo
int f = 0 ; Numero de fotos couple de débogage
////////////////////////// TIEMPOS //////////////////////////////////////////////////////////////////////////////
Denisot int = 0 ; Espera fr milisegundos para la primera foto
int delaim = 0 ; Inicial al que se le suma el incremento de retarder
incremento int = 250 ; Incremento en microsegundos
int guardarfoto = 4000 ; Espera, camara problemas para guardar la foto
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {}
Serial.Begin(9600) ; Activar para hacer DEBUG
pinMode (flash1, sortie) ;
pinMode (flash2, sortie) ;
pinMode (laser, entrée) ;
pinMode (camara, sortie) ;
pinMode(boton1,INPUT) ;
pinMode(boton2,INPUT) ;
SERVO1.Attach(6) ;
SERVO1.Write(0) ; Posicion inicial del servo
}
void loop() {}
Botones() ;
Si (clic1 == true) {//Si el boton esta pulsado
lecturalaser() ; Ejecutamos la fonction lecturalaser
}
{//Si el boton aucun pulsado esta
} //No ocurre nada
}
void lecturalaser() {}
laserState = digitalRead(laser) ;
Si (laserState == HIGH) {//Si el ne laser aucune interrumpido esta
} //No ocurre nada
else {//Si el laser se interrumpe (basse)
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 (j’ai == 1) {//Si solo ha pasado una gota por el laser
Delay(20) ; Debounce del laser
digitalWrite (camara, HIGH) ; Empezamos a obturar con la camara
i = i ++ ; Sumamos 1 i para Qué dispare a la segunda gota
}
else { //Si i = 2
disparo() ; Ejecutamos la funcion disparo
i = 1 ; J’ai vuelver une valer 1
}
}
void disparo() {}
Si (clic2 == true) {//Si el boton 2 ha sido pulsado
Delay(DELAI) ; Esperamos « delai »
delayMicroseconds(delaim) ; Esperamos el incremento en Microsegundos
flasheo() ; Ejecutamos flasheo
}
else {//Si el boton 2 non ha sido pulsado
incrementar() ; Incrementamos la espera ejecutando la funcion incrementar
Delay(DELAI) ; Esperamos « delai »
delayMicroseconds(delaim) ; Esperamos el incremento en Microsegundos
flasheo() ; Ejecutamos flasheo
Motion() ; Movemos la motion
}
}
void flasheo() {}
digitalWrite (flash1, HIGH) ; El disparamos flash 1
digitalWrite (flash2, HIGH) ; El disparamos flash 2
Delay(10) ; Le haf tiempo al mientras flash recibe ONU impulso
digitalWrite (camara, faible) ;
digitalWrite (flash1, faible) ; Apagamos el flash 1
digitalWrite (flash2, faible) ;
clic1 = false ; Quitar si queremos las gotas automaticas
clic2 = false ;
/*f = f++;
Serial.println ("retarder Inicial:") ; DÉBOGAGE
Serial.println(DELAI) ;
Serial.println ("retarder Microsegundos:") ;
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") ; DÉBOGAGE
Serial.println("Esperando") ;
Delay(guardarfoto) ; Esperamos un que la camara avant-garde la foto
Serial.println("Listo!!!") ; */
}
void incrementar() {}
delaim += incremento ;
Si {(delaim > 1000)
delaim = delaim -1000 ;
Denisot = Denisot ++ ;
}
}