Forcella ottica con Arduino
Descrizione
In questa esperienza verrà proposta un'esperienza riguardante la misurazione della velocità di un oggetto a partire da una semplice forcella ottica costruita con Arduino.
Forcella Ottica
Una forcella ottica è un dispositivo fisso o una fonte luminosa posta davanti ad un fotorivelatore. Noi costruiremo una forcella ottica a partire dagli strumenti che ci vengono forniti nel nostro kit Arduino.

Montaggio
Posizionare due fotoresistenze e due LED come mostrato nella figura sopra, facendo attenzione a mettere a qualche centimetro di distanza i due sistemi fotoresistenza-led. Utilizzare resistenze da 100 Ohm per connettere i LED ai 5 Volt, 10KOhm invece per le fotoresistenze, che vanno inoltre connesse alle porta AO e A1 della Scheda Arduino. Un esempio di montaggio è riportato in figura.
Software
Per iniziare il lato software, vanno dichiarate alcune variabili intere o float che ci serviranno in seguito. Si dichiara il monitor seriale per dichiarare ad Arduino la frequenza di bit al secondo con cui esso comunica. Ad esempio si imposta genericamente ai 9600 bit per secondo utilizzando la seguente formattazione:
Serial.begin(9600);
A questo punto, all'interno del loop, ossia la funzione che ripete le azioni che inseriamo al suo interno, stampiamo i valori che ci vengono restituiti dalle due fotoresistenze a LED accesi. In seguito, con un semplice ciclo while chiediamo che vengano registrati i due valori t1 e t2 quando i valori delle resistenze saranno inferiori ad un certo valore che dovrete trovare voi. Ossia, chiediamo di registrare i tempi nei quali il nostro oggetto passa davanti alla fotoresistenza oscurando il LED. A questo punto calcoliamo la velocità e la stampiamo a video. Ecco un esempio di codice:
Sketch
int x,y; long int t1,t2; float v; void setup() { Serial.begin(9600); } void loop() { x = analogRead(A0); y = analogRead(A1); while(x>800){x = analogRead(A0);} t1 = millis(); Serial.println("primo!"); while(y>800){y = analogRead(A1);} t2 = millis(); v= 30.0/(t2-t1); Serial.println("t1:"+String(t1)); Serial.println("t2:"+String(t2)); }
Consigli
I tempi vengono registrati in millisecondi, quindi attenzione alle unità di misura. Attenzione, inoltre, a quale delle due variabili viene definita con t1 e quale con t2, per non avere alla fine dei giochi una velocità negativa!