«

»

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

78 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 ;-)

  5. Davide

    Ciao Mauro, compimenti per la spiegazione, conosci la libreria MENWIZ, per gestire e creare dei menù su arduinio, visualizzabili su display?? Se magari ti andrebbe di fare una guida te ne sarei molto grato.

    1. Mauro Alfieri

      Ciao Davide,
      non la conoscevo, sembra interessante ma dovrei studiarla perché non mi sembra di aver trovato una wiki dell’autore.
      Se fai degli esperimenti e ti va di pubblicarli sono a disposizione.

      1. Marco

        Ciao Mauro,
        ti faccio anche io i complimenti per tutte le conoscenze che metti a disposizione, sono guide davvero utili!
        Mi unisco alla richiesta di Davide, visto che non si trova in rete una guida per MENWIZ (ma solo il materiale messo al disposizione dallo sviluppatore), potresti farla tu? A me in particolare servirebbe per gestire un menù per una centralina irrigazione un po’ più complicato di quello della tua guida poiché vorrei inserire diversi programmi di irrigazione, sono abbastanza nuovo del mondo di Arduino e gestire i menù col display LCD non sembra per niente facile. Poi penso che una libreria del genere si possa utilizzare in decine di progetti diversi!

        Saluti e grazie per la disponibilità!

        Marco

        1. Mauro Alfieri

          Ciao Marco,
          siccome sei già il secondo a formulare la richiesta proverò a fare una guida a chiusura dei miei progetti, che non sono pochi :-)
          In ogni caso resto dell’idea che l’approccio più semplice alla gestione dei menu sia senza una libreria ma scrivendo le voci di menu in un array e usando gli indici per la visualizzazione. Comprendere questa semplice tecnica rende decisamente più semplice l’approccio a qualsiasi altro metodo.

          1. Marco

            Va bene, allora proverò ad applicarmi! È possibile che in effetti per menù base sia più semplice come dici tu, piuttosto che imparare ad usare una libreria…però sai essendocene tante per gestire i menù (MENWIZ è solo un esempio), mi chiedevo come mai non si trovino guide decenti che ne spieghino l’uso.

            Ti ringrazio nuovamente per il lavoro che fai per tutti!

          2. Mauro Alfieri

            Ciao Marco,
            spesso gli autori delle librerie scrivono la documentazione supponendo che chi utilizza le loro opere sia esperto almeno quanto loro.
            Se esistono altre librerie per gestire i menu, io le ignoro, puoi verificare se qualcuna di essa sia correlata da un maggior numero di esempi e una documentazione più chiara

  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>