Programmare con Arduino – leggere un segnale analogico

Penso sia la parte più unteressante, parlando di acquisizione di un input estrno, offerta da Arduino; il motivo della mia affermazione non risiede nella complessità di quello che facciamo ma nel fatto che acquisire un segnale analogico ti permette di utilizzare Arduino per interagire con il mondo esterno non più in bianco o nero (0 e 1) ma con 1024 sfumature di grigio.

Pensa solo un attimo al tuo robot che può misurare la distanza dall muro e girare prima di toccarlo in opposizione a quanto visto nell’articolo dedicato al segnale digitale in cui l’ipotetico robot avrebbe dovuto sbatterci contro il muro per accorgersi dell’ostacolo, io lo trovo fantastico. Passo a descriverti come si fa a leggere un segnale analogico e dove potrai leggere quei valori, partiamo con lo schema:

AnalogReadSerial_BB

Schema di collegamento di un potenziometro ad Arduino

Come si vede in figura il collegamento del potenziometro è molto semplice, almeno quanto la lista della spesa:

  1. una scheda Arduino
  2. un potenziometro da 10K hom

Il gioco è presto fatto, collega gli estremi del potenziometro (quelli su cui è sempre presente una resistenza di 10K ohm indipendentemente dalla posizione della manopola) rispettivamente al +5V e Gnd di arduino, non è importante quale va al +5v e quale al pin Gnd.
Collega, quindi, il terminale centrale del potenziometro al pin A0 (ossia il pin 0 analogico, vedi schema).

Il codice che utilizzeremo per i nostri esperimenti è il seguente:

/*
 AnalogReadSerial
 Reads an analog input on pin 0,
 prints the result to the
 serial monitor

 This example code is in the public domain.
 */

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue, DEC);
}

Analizzo le linee di codice:

linee 01-08: contiene un commento multilinea, con in fondo la frase che autorizza all’uso libero il codice esposto

linea 10: definisce le operazioni di impostazione della scheda arduino (in un precedente articolo ho definito meglio a cosa serve la funzione setup() ), NOTA: in questo esempio non abbiamo definito il pin 0 come input.

linea 11: indico ad Arduino che utilizzerò la comunicazione seriale a 9600 boud (vedi articolo)

linea 14: definisco la funzione loop, quella eseguita ciclicamente da Arduino, anche per questa funzione ti rimando all’articolo “le basi

linea 15: utilizzando una sintassi compressa dichiaro la variabile sensorValue e ne imposto il valore con il risultato letto sul pin 0 analogico, per leggere il valore del pin 0 analogico ho utilizzato il comando analogRead(A0), NOTA: ho definito in questo comando che mi riferisco al pin 0 analogico (A0), il comando analogRead leggerà ad ogni ciclo della funzione loop il valore analogico rilevato sul pin 0; tale valore varia tra 0 e 1023.

linea 16: il comando Serial.prinln(sensorValue, DEC) scrive sul canale seriale di arduino che mostra i risultati nel monitor seriale, per comprendere come funziona questo meccanismo ti invito a leggere il mio articolo sui segnali digitali.

Non ti resta che inviare lo sketch ad Arduino, aprire il monitor seriale dell’IDE: serial monitor e provare a spostare la manopola del potenziometro tutta da un lato leggendo il valore rilevato (ad es: 0) e ruotando la manopola osservare il valore aumentare fino a 1023 giungendo alla fine dell’escursione del potenziometro.

Buona sperimentazione

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/programmare-con-arduino-leggere-un-segnale-analogico.html

69 pings

Skip to comment form

  1. […] Non mi dilungo sulla trattazione dell’ADC di Arduino e sula conversione da Analogico a Digitale, ti consiglio di approfondirla leggendo questo articolo. […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.