Leggiamo la fotoresistenza e visualiziamo il risultato sul PC
Come avrete capito, cerchiamo di procedere per passi per cui in questa fase ci limiteremo a leggere l’ingreso analogico e a mandare il risultato sulla porta seriale (che per noi diventa la porta USB con cui colleghiamo l’Arduino al PC) del nostro microntollore per poterla leggere con il monitor dell’IDE Arduino. Questa soluzione offre la possibilità di vedere dei risultati immediatamente senza dover prima collegare altro hardware e stabilire strategie di presentazione dei dati, a questo ci penseremo più avanti.
Per far dialogare la scheda Arduino compatibile con il PC useremo le istruzioni Serial.begin(), Serial.print() e Serial.println(), per chiarimenti ed esercizi sul loro uso vi rimando ad altri articoli ed altre esercitazioni.
Per leggere il nostro ingresso analogico utilizzaremo il Convertitore Analogico Digitale (ADC) interno al microcontrollore, per qualche chiarimento sommario visitate il link.
Per quanto riguarda questa fase dell’esperienza, per leggere il valore sul Tp1 ci basterà scrivere il comando “analogRead()” e mettere il risultato in una variabile di tipo “int” usata come appoggio della lettura.
Oltre alla variabile di appoggio e al comando analogRead(), per comodità associeremo ad una costante il numero dell’ingresso analogico utilizzato per collegare il Tp1 per cui alla fine avremo che
a) nella prima parte del listato dichiareremo la costante Tp1 assegnandogli il numero dell’ingresso analogico utilizzato per collegare il Tp1
b) sempre nella prima parte del listato dichiareremo la variabile ADCCount come “int” e inizializzeremo a 0
c) all’interno della loop() per effettuare la lettura scriveremo
ADCCount = analogRead(Tp1);
Di seguito il codice del nostro programma di prova.
// Programma per la lettura di una fotoresistena tramite un ingresso analogico
//Ricordate che nella definizione delle costanti non va messo il segno uguale fra
//il nome simbolico e il valore e non va messo il punto e virgola a fine riga
// Il valore assegnato alla costante Tp1 è 0
//perchè io ho usato per le prove l’ingresso analogico 0
#define Tp1 0
//Associo ad una costante la velocità di comunicazione della porta seriale
#define VelocitaPortaSeriale 9600
//Ritardo fra una lettura e la successiva espresso in millesimi di secondo
#define ADCDelay 500
int ADCCount = 0; //Creo e inizializzo la variabile di appoggio per la lettura dell’ADC
void setup()
{
Serial.begin(VelocitaPortaSeriale);
//Per semplificare il programma ho scelto di omettere il controllo della seriale
}
void loop()
{
ADCCount = analogRead(Tp1); //leggo il Tp1 e metto il risultato in ADCCount
Serial.print(“Lettura in COUNT “);//mando sulla seriale l’inizio della riga
Serial.println(ADCCount);//mando sulla seriale il valore letto e vado a capo
delay( ADCDelay);//aspetto prima di ripetere il ciclo
}
Aprendo il link trovate il codice copiabile e scaricabile.
Proviamo il programma
Dopo aver compilato e verificato che non ci siano segnalazioni di errori, carichiamo il programma nella scheda alla quale abbiamo collegato il circuito con la fotoresistena (parte 2), a questo punto procediamo aprendo il monitor seriale e verifichiamo che nella parte in basso a destra della finestra del monitor ci sia lo stesso valore che abbiamo assegnato alla ” VelocitaPortaSeriale “, nel caso sia diverso adeguiamolo. Se avete proceduto a cambiare il valore della velocità della porta seriale, potrebbe essere necessario chiudere il monitor e riaprirlo affinchè riprenda il suo funzionamento corretto.
Se tutto è andato come si deve dovremmo veder scorrere nella finestra del monitor seriale i valori dei count letti dal convertitore e, variando la luce che colpisce la fotoresistenza il valore presentato dovrebbe cambiare in maniera coerente alla variazione (parte 1).
Approfondimenti:
1) Il convertitore Analogico Digitale
2) Teoria dell’acquisizione tramite ADC
3) Arduino e la conversione Analogico Digitale
4) AVR e la Conversione Analogico Digitale