«

»

giu 15

Stampa Articolo

Tutorial: LCD ACM1602B con Arduino

Alcuni appassionati mi hanno segnalato che uno dei display LCD più utilizzati con Arduino ha sigla ACM1602B della zettler ( XIAMEN ZETTLER ELECTRONIC CO ) e fonito nello starter kit con Arduino Rev 3.

ACM1602B

Inizialmente ho provato a dare a tutti quelli che mi hanno scritto delle dritte leggendo il datasheet, ma dalle risposte ho compreso che non erano sufficenti o differiva qualcosa tra la teoria del datasheet e il display vero e proprio.

Ho chiesto a robot-domestici di inviarmi uno di questi kit contenenti il display in questione e devo dire che sono stati più che pronti a contribuire per aiutare tutti voi appassionati.

Ricevuto il kit mi sono procurato uno strip di pin da saldare al display:

Il video non mostra solo le saldature da eseguire ma anche come collegare il display LCD ad Arduino.

Ti mostro la piedinatura riportata sul foglio di iscruzioni (datasheet) allegato al kit:

Pin Utilizzo
- BL -
+ BL +
14 DB7
13 DB6
12 DB5
11 DB4
10 DB3
9 DB2
8 DB1
7 DB0
6 E (Enable)
5 R/W (modalità di funzionamento Read / Write)
4 RS
3 V0 (Contrasto)
2 VDD (+5v)
1 VSS ( Gnd)

e la foto dei collegamenti che devi eseguire:

connessioni dell'LCD ad Arduino

avrai capito anche tu quale sia la differenza, il datasheet mostra una sequenza dei pin da 1 a 14 e poi i successivi due per la retro illuminazione, nella realtà i pin per la retroilluminazione son i primi due a destra, invertiti rispetto al datasheet, e poi si parte con il pin 1 e non con il 14.

Spegato l’arcano puoi collegare l’LCD facilmente al tuo Arduino seguendo la foto, partendo da destra il primo pin puoi collegarlo al positivo +5v, il secondo al polo negativo.

il pin 1 è da collegare a massa ( GND );

il pin 2 all’alimentazione VDD (+5v);

il pin 3 va collegato al cursore del potenziometro da 10KΩ i cui estremi devi collegarli uno al polo positivo ed uno al polo negativo;

il pin 4 è il pin RS che devi collegare al pin 12 di Arduino;

il pin 5 definisce se la modalità di funzionamento deve essere di lettura o scrittura, lo colleghi a massa ( GND ) per metterlo in modalità scrittura ( write );

il pin 6 abilita il funzionamento del display, va collegato al pin 11 di Arduino;

i pin 11-14 sono i pin del segnale Data 4,5,6 e 7 e vanno collegati rispettivamente ai pin 5,4,3 e 2 di Arduino, ovviamente puoi collegare sia questi che i pin 4 e 6 del display ad altri pin di Arduino se il tuo progetto ti costringe a non poter utilizzare quelli suggeriti, tale modifica devi variarla anche nello sketch di esempio quando inizializzi l’oggetto LCD.

Riporto per completezza l’esempio “Hello World” dell’IDE Arduino, la descrizione dello sketch puoi leggerla in un mio precedente articolo, ecco l’esempio:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

Buon divertimento con il tuo ACM1602B !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/tutorial-lcd-acm1602b-con-arduino.html

72 comments

1 ping

Vai al modulo dei commenti

  1. Renato

    Buongiorno.
    Meglio premettere che sono un neofita completo su arduino. Non ho alcuna idea di come funziona e a dire il vero le varie ‘lezioni’ e le varie istruzioni sono, per me, piuttosto ostiche. Ora ho comprato un kit su ebay a poco prezzo e mi è arrivato da pochi giorni. Il primo problema è saltato immediatamente fuori: l’arduino comprato si chiama in verità Dcduino. Ma, io che sono furbissimo, fortunatamente avevo già comprato una scheda originale, una vera arduino uno in attesa che venisse la voglia di sperimentare.
    Perché dico questo? Perché preso da sacro furore e con tanta voglia di provare a vedere se (almeno) il tutto funzionasse, ho scaricato da arduino.cc il programma. Ovviamente con il kit non funziona: mi dice che mancano driver su Mac della seriale. Primo accidente tirato contro i muri. Allora (come detto sono furbissimo) ho tirato fuori dal cassetto il primo arduino UNO acquistato precedentemente. Per farla breve sono riuscito a sfiorare la nomination all’oscar con il mio led che si accendeva e spegneva. Deo gratias.
    Dopo aver atteso la fine degli applausi, mi è venuta voglia di vedere qualcosa sul display. Sul quale, collegato e verificato più e più volte nei contatti, mi accingo a vedere se riesco a dire la famosa frase (era di Marlene Dietrech?) ‘Hello mondo’.
    Niente. Nisba. Niet. Nè Hello né altro.
    Allora guardo le istruzioni…

    Ora nel rileggere il listato (copiato e incollato, quindi senza errori) mi accorgo che esiste un comando:
    #include

    Nella mia elementare conoscenza di questo mondo, ciò dovrebbe dire che esiste una libreria da caricare chiamata LiquidCristal.h che presumo vada a dover essere caricata prima o con il programma che fa funzionare il display.

    Ora i problemi sono due: dove trovo tale libreria (se la mia ipotesi della libreria è vera?). In rete non c’è.
    Il secondo dilemma è per me insormontabile: avendo due schede tra loro differenti, come posso caricare i driver seriali di DcDuino? E se li carico (e poi li scelgo dopo aver collegato alla usb il rispettivo arduino/dcduino) rimangono nel programma senza conflitti?Cioè, si allunga unicamente l’elenco di tali driver?

    Inoltre mi chiedo se devo disinstallare ogni volta il programma per arduino e installare quello per Dcduino ogni volta che ne collego uno di loro?

    Mi pare di aver bene evidenziata la mia confusione, ma d’altronde chi si è incaricato di spiegare come fare a far funzionare il povero processorino, non si degna di dire le cose più elementari, che per carità sono luminose e chiare per tutti, ma non per coloro che come me, sono all’inizio, che siamo come pagine bianche da riempire.

    Se ha voglia di darmi risposta le sarò ultra grato. Non posso assicurarle di pagarle la pizza ma nel remoto caso che l’Italia si risollevi dal fondo nel quale è precipitata, posso sempre contemplare di farle avere una semplice quattrostagioni ristretta ma di forma tondeggiante e colorata.

    la ringrazio

    Renato L.

    1. Mauro Alfieri

      Ciao Renato,
      il tuo commento è molto divertente, anche se lungo :-)
      Premetto che di cloni arduino ne esistono tantissimi ed io uso e conosco solo quelli ufficiali prodotti da arduino o dai partner certificati.
      La premessa escude DCDuino del quale ho letto per la prima volta oggi, nel tuo commento.

      In merito alla libreria LiquidCristal è inclusa nell’IDE arduino, il programma che hai scaricato per programmare arduino, per cui a parte l’include non devi far nulla.
      A naso ti direi che il tuo display è differente da quello da me utilizzato e probabilmente anche da quello di molti kit in circolazione, dovrai verficare quali pin sono compatibili con lo schema dei cablaggi e sistemarli sul tuo display. Solitamente i produttori di LCD rilasciano lo schema dei collegamenti dei display, se non lo fanno puoi procedere per tentativi cercando su internet schemi simili al tuo display.

      In generale consiglio a tutti, sopratutto a chi inizia, di acquistare solo materiale da produttori certificati che rilasciano on-line la documentazione dei kit e dei componenti per evitare di ritrovarsi con dell’ottimo materiale inutilizzabile.

  2. PERRIN René

    Bonjour

    Je suis très intéressé par le solar tracker de votre vidéo comment puis-je obtenir la documentation générale pour sa réalisation s’il vous plait?

    Cordialement

    1. Mauro Alfieri

      Bonjour René, vous pouvez obtenir la documentation en lisant l’article sur le solar tracker.

  3. Luigi

    Ciao,
    Anzitutto complimenti per tutte le ottime guide da te svolte.
    Vorrei chiederti la seguente perplessità
    Ho bisogno di pilotare un display 16×2 e fino li tutto ok
    Il problema è che devo mostrare dei dati con lunghezza variabile e vorrei farlo senza pulire completamente lcd.clear(); ad ogni scrittura in quanto mi da fastidio quel flash che lo schermo compie ad ogni pulizia completa (pensiamolo per dati aggiornati ogni 100ms)
    Come posso fare ?
    Avevo pensato ad una sostituzione dei caratteri con dei spazzi ogni qual volta la stringa cambia ma mi sembra una soluzione un po’ complicata, possibile che non ci sia già una libreria o una funzione che riesca a mantenere il display pulito

    Ciao e grazie!

    1. Mauro Alfieri

      Ciao Luigi,
      puoi inserire i commenti in un solo articolo, se è l’articolo errato, purché sia chiara la richiesta, provvedo io a spostarla sull’articolo corretto.
      Per il display LCD puoi usare sprintf() come faccio in alcuni articoli come il dolly, datalogger, ecc..

  4. Luigi

    ok,
    grazie per la risposta ;-)

  1. RTC Arduino: usa arduino come orologio - Mauro Alfieri Elettronica

    […] seguire le istruzioni per collegare l’LCD riportate in questo articolo, se preferisci ti ho realizzato uno schema dei collegamenti completo con Fritzing in cui non è […]

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>