Terzo Esperimento: Fotoresistenza che stampa il suo valore su lcd hd44780 compatibile

by admin on 30/06/2011

Dopo il secondo esperimento, siamo in grado di utilizzare uno schermo lcd collegato al nostro Arduino, oggi utiliziamo tale lcd per far stampare il valore di una fotoresistenza che essendo un componente analogico, avrà un valore compreso tra 0 e 1023, per chi non ha letto le caratteristiche di questo componente lo rimando a questo articolo.

Le premesse:

Se volete sapere cos’è uno schermo lcd hd44780 leggete l’articolo ad esso dedicato qui.

Colleghiamo Arduino tramite una porta usb al pc, avviate l’ide, se non avete ancora configurato l’ide vi rimando all’articolo specifico qui.

Perfetto adesso entriamo nel vivo del tutorial, per prima cosa elenchiamo il materiale occorrente:

1 Arduino (il mio è un 2009)
1 schermo lcd hd44780 compatibile (oggi usiamo un Ampire 16×2 con controller Sitronix ST7066-0A)
1 potenziometro da 10 Kohm lineare (contrassegnato da una A )
1 fotoresistore (fotoresistenza) di qualsiasi dimensione
1 resistore (resistenza) da 2200 Ohm
1 breadboard (la mia è da 840 punti ma ne basta anche una piccola)
16 fili per i collegamenti (14 per lcd e 2 per il fotoresistore)
Tempo di realizzazione 6 minuti
  
 copiamo lo sketch (il programma) nell’ide, basta selezionare tutto il programma di seguito, poi tasto destro, copia ed incolla nella pagina bianca dell’ide.
----inizio programma----
#include <LiquidCrystal.h> //include la libreria per il funzionamento dell'lcd

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //settia le uscite di arduino per lcd
int fotoresistenzaPin = 0;     // inizializza il pin 0 analogico
int fotoresistenzaReading;     // il valore che conterrà la lettura

void setup() {

  lcd.begin(16, 2); // setta del numero delle colonne e delle righe
 }

void loop() {
  lcd.print("Valore fotoresistenza"); // stampa della prima riga sull'lcd

  fotoresistenzaReading = analogRead(fotoresistenzaPin);  //inserisce il valore della lettura su fotoresistenzaReading

  lcd.setCursor(0, 1); // setta il cursore sulla seconda riga al primo carattere

  lcd.print(fotoresistenzaReading); // stampa del valore della fotoresistenza

  delay(1000); // aspetta 1 secondo (1000 millesimi)

  lcd.clear(); // pulisce lo schermo

}
----fine programma----

una volta copiato lo sketch clicchiamo sull’icona upload ed attendiamo il caricamento sul nostro Arduino.

upload fotoresistenzaconlcd

Ora scolleghiamo Arduino dal pc, sistemiamolo vicino alla breadboard ed iniziamo ad inserire i componenti.
Inserire i pin dello schermo su una linea della breadboard
Posizionare di fianco ad esso sulla parte sinistra il potenziometro in modo da aver il minor accavallamento di fili possibili
Colleghiamo i fili in questo modo:

  • LCD   RS  (pin 4)  ——————–   ARDUINO uscita digitale 12
  • LCD Enable (pin 6) ——————  ARDUINO uscita digitale 11
  • LCD D4 (pin11) ———————-  ARDUINO uscita digitale  5
  • LCD D5 (pin12) ———————-  ARDUINO uscita digitale 4
  • LCD D6 (pin13) ———————- ARDUINO uscita digitale  3
  • LCD D7 (pin14) ———————- ARDUINO uscita digitale  2
  • LCD GND (pin1) ——————— POTENZIOMETRO uscita a destra —————– ARDUINO gnd
  • LCD VCC (pin2) ——————— POTENZIOMETRO uscita a sinistra ————— ARDUINO 5v
  • LCD Vo (pin3) ———————— POTENZIOMETRO uscita centrale
  • LCD R/W (pin5) ———————- LCD GND (pin1) ponticellare i pin 1 e 5

Una volta completata questa parte, relativa allo schermo lcd, possiamo inserire e collegare la fotoresistenza:

fotoresistenza e resistenza

  • la fotoreristenza con un pin sulla linea del + e l’altra perpendicolarmente su una linea libera della breadboard (es. c18)
  • in d18 resistenza da 2200 Ohm un capo, mentre l’altro nella linea del – (gnd) della breadboard
  • in b18 un filo fino a  0 (zero) ingresso analogico di Arduino

Ora possiamo collegare il nostro Arduino ad una fonte di alimentazione,si dovrà procedere con la regolazione tramite il potenziometro del contrasto dello schermo così da poter visualizzare la scritta su lcd, il programma sulla prima riga visualizza la scritta “valore fotoresis” (causa limitazione dei 16 caratteri per riga), e nella seconda il valore analogico che varia da 0 a 1023 in base alle condizioni di luce, questo valore è più basso in condizione di scarsa luminosità dell’ambiente, al contrario aumenta proporzionalmente con l’aumentare della luminosità, esso viene aggiornato ogni secondo.

circuito completo e funzionante

Se per caso riscontrate degli errori sulla visualizzazione ricontrollate i collegamenti e soprattutto vedete se il vostro schermo è hd44780 compatibile e se nel datasheet i pin sono posti come elencato sopra.

particolare collegamenti su Arduino

Come di consueto andiamo a spiegare il programma caricato e come effettuare delle modifiche ad esso.

Per prima cosa importiamo la libreria LiquidCrystal e inizializiamo i pin dell’Arduino relativi all’lcd

include ed inizializzazione per lcd

 

Poi  inizializziamo il pin 0, e chiamiamo tale variabile fotoresistenzapin, in più creiamo un’altra variabile fotoresistenzareading con il solo scopo di inserire al suo interno il valore compreso tra 0 e 1023 della fotoresistenza

inizializzazioni per la fotoresistenza

A questo punto fatte le dovute inizializzazioni settiamo il numero di colonne e righe dell’lcd all’interno del Setup() questo è l’unico parametro da settare

setup

Come ultima cosa vediamo il Loop()

operazioni cicliche de programma

 

la funzione lcd.print() ci permette di stampare sull’lcd la scritta “valore fotoresistenza”, la potete cambiare con qualsiasi altra stringa, basta che rispettiate il limite dei 16 caratteri per riga se il vostro schermo lcd è composto da righe di 16 caratteri.

fotoresistenzareading=analogread(fotoresistenzapin) ci permette di inserire il valore letto dsl pin 0 dell’Arduino nella variabile fotoresistenzareading.

lcd.setcursor() posiziona il cursore sulla seconda riga dell’lcd (il conteggio parte sempre da 0, quindi la 1,0 non è nient’altro che la seconda righa e il primo carattere) al primo carattere

lcd.print() stampa il valore che gli viene passato, in questo caso la variabile contenete il valore attuale della fotoresistenza

delay(1000) questa funzione mette in pausa il ciclo per 1 secondo, il valore al suo interno è in millesimi, possiamo modificare tale valore aumentando o diminuendo il tempo in modo da avere un cambiamento più repentino di valori sull’lcd o viceversa.

lcd.clear() funzione senza parametri che ci permette di ripulire lo schermo da tutto ciò che troviamo visualizzato al suo interno, senza tale funzione, quando l’intensità della luce diminuisce e scende sotto di 100 viene visualizzato ancora un numero al terzo carattere questo fa si che chi legge tale valore possa incorrere in un errore, consiglio sempre di inserire tale funzione alla fine del ciclo in modo da essere sempre sicuri di cio che i legge.

Anche questo tutorial è terminato,

Buon divertimento con Arduino!!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.