Continuo la recensione del kit sensori di cui avevo parlato qualche giorno fa con questo breve post che nasce dall’esigenza di un lettore del blog che mi ha chiesto come utilizzare il sensor tracking incluso nella confezione. Il sensore si presenta come una piccola scheda elettronica i cui componenti principali sono costituiti da un led emettitore ad infrarossi ed un ricevitore.
Un’applicazione in cui io sfrutto questo sensore è ad esempio per la realizzazione di robot segui linea o ancora per realizzare un contagiri e controllare la velocità di rotazione dei miei prototipi robotico.
Potrete ad esempio di distinguere, per brevi distanza dal sensore, le differenze bianco/nero incontrate su una superficie. Su un apposito pin verrà emesso un segnale di tipo TTL che andremo a leggere con Arduino.
Il sensore è costituito da tre pin, GND, OUT (il segnale) e Vcc.
La sensibilità del sensore può essere regolata mediante un apposito trimmer.
Nell’esempio descritto, per avere percezione visiva e sonora della transizione tra bianco e nero ho utilizzato un led connesso al pin 12 ed buzzer connesso al pin 7. Utilizzerò un foglio bianco su cui ho disegnato due strisce nere.
Collegamenti:
Sensore – Arduino:
pin segnale OUT -> pin digitale 7
– negativo -> GND
+ positivo -> 5V
Buzzer – Arduino
pin segnale S -> pin digitale 4
+ positivo -> 5V
– negativo -> GND
Lo sketch è estremamente semplice è dovrete semplicemente verificare la presenza dello stato HIGH sul pin 7 di Arduino, accendere il led se si è sulla linea nera ed emettere un suono, oppure se si è sul bianco spegnere il led e non emettere suono.
// Prof. Michele Maffucci // 25.01.15 // Utilizzo di un Sensor Tracking e di un buzzer passivo const int pinSensore = 7; // pin a cui è collegato il sensore const int pinLed = 12; // pin a cui è collegato il led const int pinBuzzer = 4; // pin a cui è collegato il buzzer const int frequenza = 440; // frequenza emessa dal buzzer (440 Hz) void setup() { // inizializzazione del pin sensore, led e buzzer pinMode(pinSensore, INPUT); pinMode(pinLed, OUTPUT); pinMode(pinBuzzer,OUTPUT); } void loop() { // conserviamo nella variabile var lo stato del sensore int val = digitalRead(pinSensore); // verifichiamo se viene letto "NERO" // se vero accendiamo il led if(val == HIGH) { digitalWrite(pinLed, HIGH); // accende il led tone(pinBuzzer, frequenza); // viene emesso dal buzzer un suono a frequenza fissata delay(5); // attesa di 5 millisecondi (in modo da percepire il suono emesso) } // altrimenti spegniamo il led else { digitalWrite(pinLed, LOW); // spegne il led noTone(pinBuzzer); // non viene emesso nessun suono dal buzzer } }