Realizza un sensore analogico di luce

In questo tutorial utilizzerai lo schema circuitale del partitore di tensione per realizzare un sensore analogico di intensità luminosa.

I componenti elettronici necessari per riprodurre l’esperimento mostrato nel video sono: una scheda Arduino classica, una breadboard, alcuni jumper maschio-maschio, un resistore di qualunque valore tra 200 e 10.000 ohm (per esempio 1 Kohm) e un componente che non hai ancora visto, chiamato fotoresistore.

Un fotoresistore come quello qui raffigurato ha un costo di pochi centesimi e spesso si trova incluso in molti kit Arduino.

Come tutti i componenti, può essere acquistato in confezioni da diversi pezzi su Internet.

Si tratta di un componente che ha una resistenza di qualche migliaio di ohm, che diminuisce in modo sensibile se colpito dalla luce.

Per valutare le grandezze elettriche in gioco può essere utile l’acquisto di un multimetro digitale come quello raffigurato.

I multimetri economici in vendita sui siti come Amazon a prezzi compresi tra i 10 e i 20 Euro sono più che sufficienti per essere usati in un ambito hobbistico o didattico e per l’uso che ne potresti fare in relazione a questo corso.

Un multimetro di precisione può costare diverse centinaia di Euro, ed è un’opzione da valutare se stai allestendo un laboratorio professionale.



Lo sketch utilizzato per valutare il comportamento del sensore di luce che abbiamo realizzato è molto simile a quello utilizzato per verificare la lettura dal PIN digitale.

void setup() {
  // Inizializzo la comunicazione seriale
  Serial.begin(9600);
}

void loop() {
  // definisco la variabile
  int valore;
  // leggo il valore del sensore
  valore = analogRead(A0);
  // invio il valore letto al terminale
  Serial.println(valore);
  // breve pausa prima di un nuovo ciclo
  delay(500);

}

Quando i PIN contrassegnati come A0 … A5 di Arduino vengono letti attraverso la funzione analogRead(…) non hanno bisogno di essere configurati come INPUT, perché la funzione analogRead(…) provvede a configurarli come PIN Analogici e a collegarli al relativo Convertitore Analogico Digitale (ADC – Analog Digital Converter) che si trova all’interno del microcontrollore.

Navigando su Internet ti potrebbe capitare di imbatterti in sketch dove tali PIN vengono configurati nella funzione setup con istruzioni tipo pinMode(A0, INPUT). Si tratta di un’istruzione inutile e scorretta, ma che comunque non produce errori perché il PIN viene correttamente configurato a seguito della chiamata dell’istruzione analogRead, come già detto.

In realtà anche i PIN contrassegnati come ANALOG su Arduino UNO, e indicati con le etichette A0, A1, A2, A3, A4 e A5, possono essere utilizzati come PIN Digitali. Tutti i PIN del microcontrollore, infatti, possono svolgere più di una funzione. Sei di questi PIN, oltre a poter essere configurati come pin digitali di input o di output, possono essere interconnessi ad uno degli ADC interni e “campionare” il valore in tensione presente sul contatto elettrico traducendolo in un numero di valore compreso tra 0 e 1024.

I progettisti di Arduino hanno raggruppato questi sei PIN e li hanno etichettati da A0 ad A5.

Se stai realizzando un prototipo in cui i 14 PIN raggruppati nel lato chiamato DIGITAL non ti dovessero bastare, e non hai bisogno di leggere valori analogici, puoi utilizzare anche questi sei PIN come normali pin digitali chiamandoli 14, 15, 16, 17, 18 e 19 e impostandoli con la funzione pinMode, ad esempio pinMode(14, OUTPUT).

Questa è una caratteristica poco conosciuta della scheda Arduino UNO e quanto detto vale per la scheda classica Arduino UNO R2.

Altre schede Arduino hanno configurazioni differenti. I pin seguono sempre questo tipo di logica per essere identificati all’interno del tuo sketch: i numeri interi (0, 1, 2, 3, …) si usano per i pin digitali e le etichette A0, A1, … si usano per i pin usati in modalità analogica. Schede dioverse hanno un numero diverso di pin analogici e digitali. Alcune schede potrebbero non avere affatto pin analogici se il relativo microcontrollore non ha la funzione ADC.

Ritorneremo su questi aspetti quando incontreremo altre schede.