Il sito dedicato all'informatica ideato da Iasparra Francesco
Il codice si commenta da solo !
#define irLED 3 // Pin di Output dell'emettitore IR
#define TRIGGER_THRESHOLD 20 // Valore consentito di variazione di luce
int lightningVal;
const int analogInPin = A2; // Pin analogico di input (Fotoresistenza)
int sensorValue = 0; // valore di ritorno del sensore di luce
int sensorNow = 0; // valore di ritorno del sensore di luce
/**
* Inizializzazione del pin a cui è collegato il sensore IR (OUTPUT)
*
*/
void setup() {
pinMode(irLED, OUTPUT); //Inizializzo l'IR Led come OUTPUT
lightningVal = analogRead(analogInPin); //Inizializzo il valore della luce leggendo la prima misurazione
}
void loop() {
/*
Leggo il nuovo valore analogico dalla fotoresistenza.
Se la differenza (in valore assoluto) tra il nuovo valore letto
e il valore inizializzato nel metodo setup() supera la soglia
stabilita, allora si invoca il metodo scatta();
(occhio che una differenza in valore assoluto significa che
anche variazioni di luce negative, cioè quando si passa dalla
luce al buio, permettono il verificarsi della condizione)
*/
int newLightningVal = analogRead(analogInPin);
if (abs(newLightningVal - lightningVal) > TRIGGER_THRESHOLD) {
scatta();
delay(35); // PER CANON
}
}
void scatta() {
sendSignal();
delayMicroseconds(7330);
sendSignal();
}
/*
Questo fantastico pezzo di codice è il risultato di una lunghissima
analisi del segnale che si deve inviare ad una canon per farle scattare
una foto ! apprezzatelo !
*/
void sendSignal() {
for(int i=0; i<16; i++) {
digitalWrite(irLED, HIGH); // segnale HIGH
delayMicroseconds(11); // aspetta 11 microsecondi
digitalWrite(irLED, LOW); // segnale LOW
delayMicroseconds(11); // aspetta 11 microsecondi
}
}










