Aggiungiamo il collegamento alla fotocamera
Aggiungiamo ora il collegamento alla fotocamera.
Utilizzando degli optoisolatori è possibile separare elettricamente i circuiti della macchina fotografica e di Arduino. In questo modo, anche se dovessero esserci dei problemi sul circuito, non abbiamo il rischio di danneggiare la fotocamera.
Visto che i componenti iniziano ad essere numerosi, per aiutarci nel cablaggio possiamo usare una breadboard.
I componenti aggiunti sono:
- Una breadboard
- Un optoisolatore 4N35 (va bene anche il 4N25)
- Una resistenza da 100 / 120 ohm
- Un led di segnalazione
Possiamo modificare il circuito in questo modo:
Qui lo sketch modificato:
//definiamo i pin utilizzati int MotoreDir=3; int MotoreStep=4; int MotoreEnable=5; int Led=13; int Scatto=2; //definiamo le variabili che useremo int NumeroPassi=200;//Il motore dovrebbe fare un giro 200×1,8°=360° int Attesa=1000;//1 secondo tra un giro e l’altro int Velocita=5;//Tempo di attesa tra uno step e l’altro. Più è basso questo valore più è veloce il motore boolean Direzione = false;//variabile per gestire la direzione del motore int NumeroFotoDaScattare = 300;//variabile per gestire il numero di foto da scattare int NumeroFotoScattata = 0; int AttesaDopoMovimento = 300;//per evitare vibrazioni, possiamo mettere una piccola pausa subito dopo il movimento int DurataScatto=400;//Variabile per indicare quanto tempo (in millisecondi) deve essere simulata la pressione dello scatto int AttesaDopoScatto = 300;//per evitare vibrazioni, possiamo mettere una piccola pausa prima di ricominciare a muovere //con questi valori la fase di scatto dura 1 secondo. void setup() { pinMode(MotoreDir, OUTPUT); // imposto il pin indicato come uscita pinMode(MotoreStep, OUTPUT); // imposto il pin indicato come uscita pinMode(MotoreEnable, OUTPUT); // imposto il pin indicato come uscita pinMode(Scatto, OUTPUT); // imposto il pin indicato come uscita pinMode(Led, OUTPUT); // imposto il pin indicato come uscita } void loop(){ if (NumeroFotoScattataScatta(); delay(Attesa);//attendiamo per il prossimo ciclo NumeroFotoScattata++;//Incrementiamo il numero di foto scattate. //Scritta in questo modo, questa riga equivale a //NumeroFotoScattata = NumeroFotoScattata + 1 } } void AccendiLed(void){ digitalWrite(Led, HIGH);//accendiamo il led } void SpegniLed(void){ digitalWrite(Led, LOW);//spegnamo il led } void Motore(void){ if (Direzione==true) digitalWrite(MotoreDir, HIGH);//Abilitiamo un senso di rotazione if (Direzione==false) digitalWrite(MotoreDir, LOW);//Abilitiamo il senso opposto digitalWrite(MotoreEnable, LOW);//Abilitiamo la scheda passo passo abbassando il livello logico dell’uscita for (int ciclo=0;ciclo //diamo un impulso al motore digitalWrite(MotoreStep, LOW); delayMicroseconds(2); digitalWrite(MotoreStep, HIGH); delayMicroseconds(2); delay(Velocita);//attesa per il prossimo impulso } digitalWrite(MotoreEnable, HIGH);//Disabilitiamo la scheda passo passo alzando il livello logico dell’uscita } void Scatta(void){ delay(AttesaDopoMovimento); digitalWrite(Scatto, HIGH);//Iniziamo a simulare la pressione dello scatto delay(DurataScatto); digitalWrite(Scatto, LOW);//terminiamo lo scatto delay(AttesaDopoScatto); }
Leave a Reply