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 !!!

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

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

92 commenti

1 ping

Vai al modulo dei commenti

    • Antonio il 13 Settembre 2012 alle 20:03
    • Rispondi

    Ciao, grazie innanzitutto per il tutorial.
    Ho un problema. Collegandolo come nel video, si illumina lo schermo, ma non compare nessuna scritta.
    Sia nella configurazione 4 bit che 8 bit.
    Non sembrano esserci errori nel codice ( è uguale al tuo).
    Qualche suggerimento?
    Grazie ancora.
    Ciao

    1. Ciao Antonio,
      hai verificato che il potenziometro per la regolazione del contrasto sia connesso in modo corretto e che ruotandolo non cambi nulla?

      Mauro

        • Antonio il 14 Settembre 2012 alle 00:04
        • Rispondi

        Sì, in realtà non avevo a disposizione un potenziometro, quindi ho collegato quel pin con un partitore di tensione tra 5 V e massa di due resistenze uguali. In effetti la regolazione del contrasto sembra funzionare (spostando il pin a massa si annerisce una riga). Non vedo visualizzate però le stringhe che passo con arduino.
        In realtà il display mi è stato venduto separatamente dal kit, poichè non avevano in stock il kit con display.
        Può darsi che altre forniture ( o altre marche) producano lo stesso display con pedinatura diversa? (e che mi abbiano rifilato proprio quello?)

        1. Ciao Antonio,
          abbiamo trovato il problema, senza potenziometro non puoi regolare il contrasto.
          Collegandolo a massa ottieni il contrasto massimo, tutta la riga nera, collegandolo al positivo ottieni riga bianca.

          Se proprio non riesci a procurartene uno prova a leggere altri articoli in cui c’è un display, tipo il TriggrT, vedrai come collegare un transistor e regolare in PWM il contrasto.

          Mauro

    • Bruno il 15 Novembre 2012 alle 00:21
    • Rispondi

    Ciao Mauro,
    come capirai sono ai primi passi con Arduino e il tuo sito è quanto di meglio un principiante come me può augurarsi di trovare; per questo ti ringrazio moltissimo. Sono alle prese da alcune ore con il collegamento del Display LCD ad Arduino (sketch “hello world”) e dopo molti tentativi seguendo il datasheet del modello del display ( nel mio caso il WINSTAR WH1602B che ho visto usare anche da altri per Arduino e che ha un datasheet “apparentemente”identico a quello dell’ ACB1602B) arrivo allo stesso risultato di molti che si rivolgono a te per aiuto: display acceso, potenziomentro funzionante che ruotato fa evidenziare sul display la riga delle matrici scure dei caratteri (fila di 16 rettangoli neri). La domanda che ti rivolgo è se nella tua esperienza hai mai trattato con questo modello di Display LCD e se per questo, come nel caso del ACB1602B, presenta differenze tra il datasheet e la piedinatura reale, perchè nel mio caso il tuo schema della foto dei collegamenti non sembra funzionare.
    Ti ringrazio moltissimo per il supporto.

    1. Ciao Bruno,
      purtroppo non possiedo un display WINSTAR WH1602B, ma se guardi il datasheet potrai capire subito se differiscono i pin.
      Da quello che scrivi sembra proprio un problema di pin e non del display perché il potenziometro regola correttamente il contrasto.

      Mauro

    • Leandro il 29 Novembre 2012 alle 13:21
    • Rispondi

    Ciao Mauro,
    grazie infinite anche per quest’altro tuo utilissimo tutorial.

    Avrei bisogno nuovamente del tuo aiuto.

    Vorrei sapere se sapresti come visualizzare sul display il valore della velocità di rotazione imposta ad un motorino passo passo tramite un potenziometro connesso come da te suggerito su un altro tuo tutorial.

    Grazie, saluti
    Leandro

    1. Ciao Leandro,
      non ho chiaro cosa vuoi memorizzare, la velocità angolare?
      il valore impostato dal potenziometro?

      Mauro

        • Leandro il 29 Novembre 2012 alle 16:25
        • Rispondi

        No Mauro, non intendevo memorizzare ma visualizzare a display la velocità lineare del laser di un sistema di lettua CD mosso dal motorino passo passo; alla fine ho risolto il problema effettuando una conversione tra numero dei passi al secondo e velocità lineare con una semplice proporzione matematica e passando alla funzione lcd.print() la variabile cui avevo assegnato questo valore.

        Adesso però mi è sorto un nuovo problema…quando visualizzo a display velocità via via decrescenti, le ultime cifre non vengono cancellate…come si potrebbe effettuare il “refresh” quando visualizzo un nuovo valore? Non so se sono riuscito a spiegarmi bene…
        Grazie comunque per la tua solita celerità e disponibilità nelle risposte!!

        1. Ciao Leandro,
          la soluzione che hai utilizzato è la medesima che ti avrei suggerito compreso il problema, ottima intuizione.

          Per il refresh del display ci sono diverse tecniche, le trovi negli articoli dedicati ai Display LCD.

          Mauro

    • ibrahm il 19 Gennaio 2013 alle 14:02
    • Rispondi

    salve , dove posso acquistare questo display LCD ACM1602B grazie .

    1. Ciao Ibrahm,
      io acquisto di solito da http://www.robot-domestici.it e mi trovo bene.

      Mauro

    • Andrea il 2 Marzo 2013 alle 14:59
    • Rispondi

    Ciao Mauro,
    innanzitutto grazie per tutti i tutorial e le spiegazioni che metti a disposizione. Io mi sto avvicinando da poco al fantastico mondo di Arduino, ma ho incontrato un problema proprio con l’interfacciamento con questo display. Mi pare di aver seguito fedelmente le tue indicazioni di montaggio, ma il risultato è che ho i display acceso, ma nessun carattere visualizzato. Ho anche provato a regolare il potenziomentro, ma il risultato non cambia. cosa potrebbe essere? Grazie!

    1. Ciao Andrea,
      sei certo che la piedi natura del tuo display sia la medesima indicata?
      Ti invito a controllare in quanto mi è già capitato di trovare dei display con la medesima sigla ma i contatti differenti perchè di produttori diversi.

      Di solito il problema che hai può dipendere dal pin di contrasto che non coincide con quello del mio LCD e quindi pensi di regolari ma stai inviando comandi differenti.

      Mauro

    • Andrea il 26 Marzo 2013 alle 18:11
    • Rispondi

    Ciao Mauro, complimentoni per il lavoro che svolgi. Ho da poco acquistato il kit di arduino in cina. Insieme c’è anche uno schermo lcd la marca è TM162a-3 V2.0. Ho fatto tutti i collegamenti per 5 volte ma il risultato è sempre lo stesso: schermo illuminato che funziona con il potenziometro, ma non leggo nulla solo, al variare del potenziometro qualche pixel bianco. Sono disperato spero che non sia rotto. Grazie per l’aiuto. Andrea

    1. Ciao Andrea,
      Acquistare prodotti cinesi quando l’idea é italiana ritengo che sia un offesa alla nostra creatività.
      La mia non é una guerra al prodotto cinese ma un dare a Cesare quel che é di Cesare.
      La prima arduino che ho acquistato era cinese non sapevo che arduino fosse un prodotto italiano, e forse anche per riparare a questo errore ho iniziato a scrivere questo Blog, una sorta di espiazione.

      Da quando so che é un prodotto italiano e che ci sono molti prodotti di manifattura italiana cerco di preferirli.
      Riconosco valido e acquisto il prodotto estero, cinese, giapponese, americano, koreano quando é originale ossia inventato nel paese di vendita e non esiste un prodotto di pari caratteristiche di produzione italiana.

      Sfogo a parte per il tuo LCD prova a guardare la piedi natura indicata sul foglio del produttore, che ti avranno inviato, spesso si tratta di pin invertiti rispetto alla versione che ho io.

      Mauro

        • Andrea il 27 Marzo 2013 alle 15:21
        • Rispondi

        Grazie mille per la risposta. Purtroppo ho scoperto da poco anch’io che Arduino è italiano. Se lo avrei saputo fin da subito avrei sicuramente acquistato in italia. Ma questo mi serve per fare esperienza visto che troppi arduini dovrò acquistare. Andrea

    • Paolo il 13 Aprile 2013 alle 18:48
    • Rispondi

    Ciao Mauro,
    ritorno con una richiesta.
    Ho acquistato uno starter kit e mi hanno fornito un display Winstar WH1602B.
    Ho caricato un primo programma di prova da me realizzato che fa apparire una scritta un carattere alla volta, tanto per prender pratica, e tutto funziona perfettamente.
    Solo un piccolo dubbio… sulla retroilluminazione.
    Per il mio primo test ho collegato i pin 15 e 16 alle uscite +5 V e GND di Arduino (in pratica gli stessi ai quali ho collegato il potenziometro per regolare il contrasto) ed il display si illumina benissimo.. ma il mio dubbio è su questo collegamento. Assorbirà troppa corrente col rischio di danneggiare Arduino? E poi, anche ammettendo di collegare questi due pin del display ad una tensione di 5V presa da un alimentatore esterno, se la retroilluminazione è a LED non ci vorrebbe un resistore per limitare la corrente? A questo punto potrei collegare un potenziometro da 1 k con un resistore da 20 in serie al cursore ed avere una regolazione anche della luminosità oltre che del contrasto.
    Purtroppo anche altri tutorial presenti in rete, oltre ad essere come al solito ben lontani dalla chiarezza dei tuoi tutorial, trascurano totalmente l’argomento o si contraddicono, ho letto cose che variano fra “collegate ai + 5V di Arduino” a “nooo si brucia tutto, ci vuole un transistor” (addirittura!!!!).
    Anche il datasheet è poco di aiuto, riporta diversi assorbimenti di corrente a seconda che sia edge o matrix ma senza spiegare come si fa a sapere come sia il proprio modello.
    Sarebbe gradito, su questo tema della retroilluminazione, un tuo…. illuminante parere.

    1. Ciao Paolo,
      non sono riuscito a trovare il datasheet di questo display, e come mi dici non sai capire se sia Matrix o Edge per cui anche trovando lo non potremmo stabilire quali dati leggere.

      Io per regola ti consiglio di evitare il passaggio di alimentazione per i pin di Arduino, non tanto perché si possa bruciare quanto per la corrente erogata.
      Nei miei tutorial troverai che uso i 5v di arduino per alimentare display, servo, motori, ecc.. è solo perché i miei sono esperimenti che durano picchi minuti e devono essere facilmente replicabili.

      Se iniziassi a mostrare alimentazione esterna, circuiti di regolazione ecc… solo per provare un display scoraggerei tutti gli appassionati che non possono comprare un laboratorio per un test di un display.

      Trovi sul blog degli articoli dedicati a schede di alimentazione molto valide.

      Sulla questione resistenze, controlla sul datasheet, ma sono quasi certo che le abbia al suo interno, facilitandoti il compito di alimentarlo.

      Mauro

        • Paolo il 18 Aprile 2013 alle 16:43
        • Rispondi

        Grazie per la risposta.
        Il datasheet, purtroppo, fa riferimento sia al matrix che all’edge… comunque vedo che mi confermi che è meglio alimentare il display e la sua retroilluminazione da una fonte esterna.
        Per il resistore della retroilluminazione, credo sia abbastanza semplice scoprire se è integrato o meno con un paio di misure.
        Ecco cosa farò.
        Ricaverò dall’alimentazione esterna che adopererò per Arduino (9 V) una tensione di 5 V mediante un LM317 o un 7805 (dipende da quale mi ritroverò nei cassettini) ed userò questa per l’alimentazione del display e per la retroilluminazione che a questo punto renderò regolabile con un trimmer ed una eventuale resistenza in serie di una ventina di ohm per prudenza (nel caso il resistore integrato sia assente).
        Quando avrò fatto tutto, ti invierò lo schema così se vorrai potrai inserirlo nel tuo tutorial.

        1. Ciao Paolo,
          ottimo.
          Attendo il tuo schema, foto e ciò che vorrai raccontare del tuo esperimento.

          Mauro

    • orlando il 31 Maggio 2013 alle 15:32
    • Rispondi

    Ciao mauro,
    ho fatto un semplice circuito con un potenziomentro e un sensore di flessione (il sensore regola la rotazione del servo) per calibrare il tutto ho utilizzato il monitor del seriale da pc …..mi piacerebbe poter visualizzarealmeno i gradi del servo su un display (lo stesso del tutorial) oppure ancora meglio l’uscita del seriale stesso.
    grazie in anticipo e grazie mille per aver condiviso le tue conoscenze con noi comuni mortali!

      • orlando il 31 Maggio 2013 alle 16:55
      • Rispondi

      ok risolto! arrivarci da soli è una grande soddisfazione!

      1. Ciao Orlando,
        ne ero certo e condivido la tua soddisfazione ogni volta che riesco in un nuovo progetto.
        Sempre valido l’invito a pubblicare il tuo progetto se vorrai.

        Mauro

    1. Ciao orlando,
      sono anche io un “comune mortale” provo e riprovo e sono certo che ce la farai anche tu.
      poi hai a disposizione Internet che il miglior alleato che io conosca.

      Mauro

    • Jacopo il 4 Giugno 2013 alle 15:04
    • Rispondi

    Ciao Mauro
    ho appena finito un progetto di un sensore di parcheggio con arduino, prima di far partire il programma e visualizzare la distanza su un display lcd 16×2 ecc. volevo chiederti come fare ( se possibile ) comparire una specie di presentazione con nome, cognome e istituto ecc. per alcuni secondi, dopo di che far partire il programma e visualizzare la distanza e tutto il resto. Grazie

    1. Ciao Jacopo,
      sei sicuramente bravissimo se sei riuscito a fare tutto da solo.
      Per il tuo dubbio io proverei a mettere nella sezione setup() una serie di linee che scrivano sul display le informazioni che vuoi visualizare prima di eseguire il loop() intervallandole con un delay.

      Mi piacerebbe ricevere via email ( casella info del blog ) le foto e lo sketch che hai realizzato.

      Mauro

        • Jacopo il 4 Giugno 2013 alle 19:39
        • Rispondi

        Certamente, questo progetto è la tesina che ho realizzato per l’esame di maturità di quest’anno e sto aggiungendo gli ultimi ritocchi, appena riesco ti mando foto e sketch, grazie per l’aiuto provo e ti faccio sapere !

        1. Ottimo Jacopo

    • Luigi il 3 Luglio 2013 alle 17:55
    • Rispondi

    Ciao, ho collegato tutto a dovere (spero), mi si illumina e credo che il display scrivi in cinese … nel senso cho ho delle righe con punti interrogativi, underscore, rettangoli neri ed un altro simbolo orientale ….
    mica c’è bisogno di settare qualcosa ?

    Thanks

    1. Ciao Luigi,
      se il display é lo stesso dell’articolo non devi impostare nulla.
      Il fenomeno e osservi potrebbe essere dovuto ad un errore di connessione dei pin DATA.

      Mauro

    • Giuliano il 5 Luglio 2013 alle 21:15
    • Rispondi

    Ciao Mauro complimenti x il sito
    Sono un po’ in difficoltà e penso che tu sia l’unico che possa aiutarmi
    ho acquistato un arduino uno e display keypad shield 16×2
    Avendo un display LCD shield si innesta tranquillamente alla scheda arduino uno,dando alimentazione il display si accende e il potenziometro regola il contrasto
    Ma non riesco a visualizzare nessuna scritta sul display
    Stessa identica cosa me la con un display sempre 16×2 ho saldato i pin e collegato i vari cablaggi
    Anche collegando il software non riesco a concludere niente
    Ti ringrazio
    A presto

    1. Ciao Giuliano,
      prova ad usare lo sketch presentato nell’articolo dedicato alla KeyPad LCD, ce ne sono diversi sul Blog.
      Mauro

    • valon il 27 Agosto 2013 alle 14:42
    • Rispondi

    ciao Mauro
    ho un problema col la scrittura da kaypad a lcd, come faccio a scrivere numeri interi sul lcd, sn riuscito a farli scrivere 2 contemporaniamente pero a me mi serve scrivere per esempio 134
    ti ringrazio in anticipo

    1. Ciao Valon,
      sul blog trovi alcuni sketch dedicati alla KeyPad LCD che puoi consultare.
      La scrittura sul display la puoi eseguire nello stesso modo in cui la fai sul display mostrato in questo sketch, non varia se vuoi scrivere 1,2,3,4,5,6,7,8,9…16 caratteri

      Mauro

        • valon il 31 Agosto 2013 alle 17:22
        • Rispondi

        grazie della risposta, ho un progetto che devo aprire un uscita e aspettare quel numero che gli scrivo quello e il mio problema

        1. Ciao Valon,
          non ho capito cosa intendi realizzare e come coinvolge la Keypad LCD.

          Mauro

            • valon il 1 Settembre 2013 alle 15:49

            esempio : scrivo col kay pad 145, accendo il led per 145 secondi, il led deve rimanere acceso per qualsiasi numero io scriva sul LCD con kaypad

          1. Ciao Valon,
            ok, ora mi é più chiaro casa vuoi realizzare con la Keypad.

            Mauro

            • valon il 3 Settembre 2013 alle 00:37

            mi potresti aiutare con un piccolo pezzo ? cmq complimenti per il lavoro che fai appena avro un po di soldi faro una donazione per mandare avanti il tuo lavoro, ciao grazie

          2. Ciao Valon,
            il progetto mi sembra realizzabile con poche righe di codice, io partirei con dividere i blocchi logici:
            1. impostazione del numero
            2. accensione del led
            3. attesa del tempo di pausa
            4. spengo il led

            Per impostare il valore puoi usare una variabile int;
            Alla pressione del pulsante RIGHT della keypad incrementi il suo valore di 1;
            Alla pressione del pulsante LEFT della keypad decrementi il suo valore di 1;
            Alla pressione del pulsante SELECT della keypad passi alla blocco 2,3 e 4;

            Mauro

    • Cristiano il 31 Agosto 2013 alle 13:10
    • Rispondi

    ciao Mauro
    Io ho lo stesso tuo display LCD ACM1602B, sul programma non ci sono errori, e per i collegamenti ho eseguito i tuoi, ma sul display non mi compare nulla come mai ?

    1. Ciao Cristiano,
      il display si accende? Ruotando il potenziometro compaiono dei quadrati neri in corrispondenza dei caratteri?

      Mauro

    • andre il 13 Settembre 2013 alle 18:21
    • Rispondi

    Ciao, io ho il tuo stesso LCD, ho collegato tutto come fai vedere nel tutorial, ma non appare niente sullo schermo. Io non uso il potenziometro, puo dipendere da quello?

    1. Ciao Andre,
      potrebbe, il potenziometro regola il contrasto.

      Mauro

    • Giovanni il 30 Ottobre 2013 alle 22:40
    • Rispondi

    Salve,
    avrei bisogno di un aiuto, non riesco a capire come mai non funziona un LCD I2C seriale che ho appena acquistato lo collego ad ARDUINO UNO tra GND 5V SDA su A4 ed SLC su A5, scarico il codice esempio ma non visualizza nulla dove sbaglio ? indirizzo 0x27 di seguito le copio il codice.

    1. Ciao Giovanni,
      nei miei articoli c’è scritto chiaramente di non pubblicare codice nei commenti illeggibile, ti chiedo di rispettare questa regola.

      Per il display seriale ho da pochi giorni scritto un articolo a riguardo e so che non tutte le librerie I2C sono uguali.
      Io ho dovuto utilizzare quella del produttore del monitor seriale xchè le altre trovate in internet non hanno funzionato.

      Mauro

    • Nicola il 12 Novembre 2013 alle 15:02
    • Rispondi

    Buongiorno Mauro , volevo chiederti se lcd e la scheda data logger ( mi riferisco a quella con SD e orologio insieme ) possono convivere ; mi sembra che per il loro funzionamento utilizzano alcuni pin in comune ( in particolare i pin compresi dal 10 al 13 mi sembra di aver capito ) . Per quanto riguarda invece , i pin dal 2 al 5 nel tuo articolo spieghi che si possono cambiare senza problemi ( variando lo sketch ) . Grazie .

    1. Ciao Nicola,
      le due RTC shield che ho io non hanno la SDCard integrata.
      Il progetto Datalogger usa sia una shield SDCard sia una shield RTC e che io ricordi non usano gli stessi pin.
      Di solito la RTC utilizza i pin A4 ed A5 ossia SDA ed SCL e non i pin 10-13 che sono usati per la comunicazione ICSP.

      Mauro

    • Jack il 31 Gennaio 2014 alle 12:19
    • Rispondi

    Salve Mauro,
    Prima di tutto vorrei ringraziarti per tutti i tutorial che ci offri, poi avrei qualcosa da chiederti…ho appena comprato questo LCD: http://www.robot-italy.com/it/16×2-lcd-display-green.html
    Sul datasheet c’è scritto: GDM1602K
    Ho fatto tutti i collegamenti come i tuoi per ben 17 volte e si illumina tutto, (anche con potenziometro da 10Kohm) ma i caratteri non vengono printati….se aumento al max il potenziometro si vede solo la prima riga tutta di quadratini neri; ora non vorrei che fosse perchè non ho saldato i pin all’lcd ma solo appoggiati con delle femm/maschio che arrivano alla bread, se puoi darmi una risposta mi faresti un grosso piacere.

    1. Ciao Jack,
      prova a verificare il datasheet che il venditore ti ha inviato, a volte è solo la posizione dei pin a differire da LCD ad LCD e causa gli effetti che rilevi.

      Mauro

        • Jack il 31 Gennaio 2014 alle 12:46
        • Rispondi

        Grazie Mauro…ho provato a vedere e si avevo invertito un pin, poi si leggevano caratteri strani ma mi è bastato staccare e collegare l’alimentazione e ora va perfettamente…Grazie di cuore Mauro

        1. Bene jack

            • Jack il 31 Gennaio 2014 alle 19:10

            Buonasera Mauro….non sapendo dove chiedertelo te lo chiedo qui:
            Mi sono ritirato questo per provare un po come funziona:
            http://www.robot-italy.com/it/standalone-toggle-capacitive-touch-sensor-breakout-at42qt1012.html
            Ora vorrei chiederti se potresti spiegarmi un po tu come potrei iniziare (anche accendere e spegnere un led) perche ho provato e non ci riesco…cercato su internet nulla su questo sensore….mi potresti dare una mano ?

          1. Ciao Jack,
            non ho avuto modo di provare questo sensore e senza un test sul campo mi è complesso risponderti.
            Potresti regalarmene uno con cui scrivere degli articoli?

            Mauro

            • Jack il 1 Febbraio 2014 alle 16:03

            Ciao Mauro,
            essendo un ragazzo di 15 anni, non ho possibilità economiche (dato che ho deciso di “automantenermi” su questi oggetti) di regalartene uno, anche se sarei molto felice di farlo; in ogni caso, se me ne capiterà un’altro sotto mano ti scriverò.

            P.S: ho un’altro problema con l’LCD…ho fatto un Termometro con TMP36 e potenziometro che printa la temperatura sull’LCD. Ora: ho fatto tutti i collegamenti bene, il termometro printa bene sul seriale ma ho sempre lo stesso problema di contrasto dei caratteri dell’lcd…che se aumento di colpo il potenziometro di intravedono e un’attimo dopo scompaiono ritornando dei rettangolini neri…ho cercato ovunque, cambiando anche potenziometro ma niente.
            Sapresti aiutarmi ?

          2. Ciao Jack,
            è ovvio che la tua giovane età non ti consente di far fronte a spese extra, comprendo.
            Tuttavia è pur vero che hai tante possibilità di documentarti su internet e di certo sei nell’età migliore per iniziare con arduino e con i sensori per cui ti incoraggio a continuare e studiare sempre di più questo sistema che può darti tante soddisfazioni.

            Il comportamento del tuo LCD è anomalo, sembra legato al contrasto del potenziometro che puoi sostituire se ne hai un’altro.
            Tuttavia non escludo che possa trattarsi anche di un difetto dell’LCD in quanto se giri lentamente il potenzimetro dovresti prima o dopo vedere i caratteri e non solo per pochi secondi.

            Mauro

    • giacomo il 9 Marzo 2014 alle 20:39
    • Rispondi

    Ciao Mauro, come si fa a fare un menu su arduino da pubblicare su arduino ? vorrei fare un menu per cambiare la visualizzazione della temperatura su lcd.

    1. Ciao Giacomo, i menù sono complessi da realizzare ma non impossibili. Io ne ho realizzato un tipo nel progetto del Dolly che puoi usare per iniziare a scrivere il tuo.

    • Fabio il 15 Agosto 2014 alle 02:56
    • Rispondi

    Ciao Mauro, non sono molto esperto, ho basi di elettronica (al secondo superiore addirittura creammo un processore, faceva due operazioni in croce, ma funzionava), ma sono passati tanti anni, in compenso però nella vita sono un programmatore :); Ho un dubbio: tu dici che “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;”, bene, io ho acquistato un 67WR10K della BI Technologies e collegando il pin 3 ai 5V, il numero 1 a GND ed il 2 al pin3 dell’lcd, sullo schermo non appare nulla, si è risolto tutto eliminando il pin 1 che era a GND; Ho capito io male a leggere le istruzioni, oppure non ho capito il funzionamento del potenziometro?

    Ti ringrazio

    1. Ciao Fabio,
      non conosco il tipo di potenziometro che hai tu, potrebbe essere differente come schema di connessione da quello che ho usato io e questo spiegherebbe il malfunzionamento.
      Considera che un potenziometro standard per funzionare in modo corretto deve essere collegato completamente e non solo con 2 pin, forse il tuo è differente.

        • Fabio il 2 Settembre 2014 alle 00:57
        • Rispondi

        Boh, non so che dirti, l’ho collegato in tutti i modi possibili ed immaginabili, ma funziona solo come ti ho descritto su.
        Vabbè a parte questo, volevo chiederti una cosa, anche se qui probabilmente non c’entra un bel nulla, avrei bisogno di erogare 12V da arduino; premesso ciò e non volendo andare contro il primo principio della termodinamica, ho letto da qualche parte che per qualche strano marchingegno (scusa ma ho lasciato troppo presto l’università) in piccole quantità si possono generare volt o ampere; esiste una shield che fa questo (tipo driver per motori) od un qualche tutorial su questo tuo bel sito?

        Ti ringrazio per avermi risposto.

        Ti auguro il meglio

        1. Ciao Fabio,
          ho scritto un articolo in cui ho trattato le potenze erogabili da arduino.
          Esistono dei circuiti in grado di erogare da 3,7v di una LiPo i 5v necessari ad alimentare arduino, per voltaggi superiori non so.
          Formulata in questo modo mi è difficile comprendere cosa tu voglia realizzare e di conseguenza aiutarti.
          Ti suggerisco di cercare nel blog argomenti simili al tuo problema e commentarli.

    • mirco il 1 Ottobre 2014 alle 14:28
    • Rispondi

    Salve Mauro,
    in una applicazione con lcd usando la classica libreria standard, ho riscontrato alcuni problemi:
    se visualizzo un contatore, quando passa dalle unita’ alle decine incrementando sul display il posto delle unita’ lascia il posto alle decine traslando verso destra ,
    mentre quando decresce dalle decine alle unita’ fa’ la stessa cosa verso sinistra, ma mantenendo visualizzato 0 alla sua destra es.
    12,11,10,90,80…. e cosi’ via
    sbaglio qualcosa nel programma ?
    grazie per il tuo tempo
    Mirco

    1. Ciao Mirco,
      non sbagli nulla in quanto la posizione del cursore è gestita in automatico dalla libreria, ti consiglio di pulire il display o di usare la tecnica del sprintf() per evitare questo problema.
      Trovi molti miei articoli in cui la utilizzo con grande efficacia.

    • Renato il 2 Ottobre 2014 alle 18:46
    • Rispondi

    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. 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.

    • PERRIN René il 21 Ottobre 2014 alle 08:29
    • Rispondi

    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. Bonjour René, vous pouvez obtenir la documentation en lisant l’article sur le solar tracker.

    • Luigi il 27 Ottobre 2014 alle 16:15
    • Rispondi

    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. 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..

    • Luigi il 28 Ottobre 2014 alle 14:12
    • Rispondi

    ok,
    grazie per la risposta 😉

    • Davide il 10 Marzo 2015 alle 15:18
    • Rispondi

    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. 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.

        • Marco il 16 Marzo 2015 alle 12:13
        • Rispondi

        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. 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.

            • Marco il 18 Marzo 2015 alle 00:06

            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!

          1. 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

    • Paolo il 9 Aprile 2015 alle 13:42
    • Rispondi

    Ciao Mauro

    Sono un neofita di arduino . Sto seguendo il corso base on-line ed ho provato a collegare il display contenuto nello starter kit V2 originale ARDUINO. Il modello del display è un 1602A. Ho già verificato le pinature ed adeguate come suggerito nel tutorial. Scaricando su ARDUINO lo sketch “HELLO WORD” il display si accende ed in modo ciclico, ogni 4-5 sec, varia la luminosità. Inoltre si notano alcuni pixel nella seconda riga, quasi fosse un disturbo. La cosa per me più strana, però, è che togliendo l’alimentazione (+5V e GND) continua la variazione di luminosità ma non si nota più alcun pixel. Questa ciclicità Da cosa può dipendere?

    Grazie e complimenti per il sito

    Ciao
    Paolo

    1. Ciao Paolo,
      il modello di display utilizzato in questo tutorial è il 1602B e non il tuo, controlla sul manuale incluso nel kit la corretta piedinatura del modello 1602A

        • Paolo il 9 Aprile 2015 alle 21:54
        • Rispondi

        Ciao Mauro

        Il problema sta nella piedinatura. Il data sheet del 1602A è corretto e non necessita di essere modificato come su indicato.

        Grazie mille
        ciao
        Paolo

        1. Ciao Paolo,
          non ho compreso cosa tu abbia scritto ma se hai risolto a me va bene 🙂

    • Luca il 3 Ottobre 2015 alle 09:50
    • Rispondi

    Buongiorno Mauro, io sto usano l’lcd marchiato LCM1602C che era nel kit di arduino, funziona lo stesso seguendo questa guida, mi chiedevo come mai però funziona solo se uso i pin di arduino 5-4-3-2 , ho provato ad esempio utilizzando i 7-6-5-4 ma non funziona. Grazie mille. Ottimo Blog. Ciao.

    1. Ciao Luca,
      tra la prima serie di pin e la seconda non ci sono differenze fondamentali su arduino per cui potrebbe dipendere dal tuo collegamento, dal software, che devi adeguare cambiando i pin dati, o da qualche altra shield/sensore che interferisce con l’LCD

    • roberto il 29 Dicembre 2015 alle 11:15
    • Rispondi

    Ciao mauro , ho eseguito il progetto n° 11 dello starter kit, controllando i collegamenti ad uno ad uno, ma c’è la retroilluminazione e compare una barra superiore, quella inferiore nisba, oltretutto, nessun messaggio. ho usato quello in dotazione, ovvero lcd-LCM1602C. Secondo te è guasto?

    Grazie anticipatamente ciao

    Roberto

    1. Ciao Roberto,
      purtroppo non conosco l’esercizio di cui scrivi, non so a memoria tutti gli esercizi del manuale dello starter kit, posso di certo dirti che situazioni come quelle che verifichi sul tuo display possono derivare da un errato collegamento, magari il modello incluso nel tuo starter-kit è differente da quello descritto nel libro e varia qualche connessione.

    • davide bevilacqua il 8 Novembre 2016 alle 18:02
    • Rispondi

    ciao mauro io ho dei problemi con il caricamento del file dopo la verifica dello sketch, mi dice trovata libreria non valida e non ho idea di come ovviare a questo problema.
    Tieni presente che io uso un display lcd standard i2c e ho scaricato l’apposita libreria.

    1. Ciao Davide,
      questo articolo è riferito a Display che non sono I2C, prova a leggere gli articoli dedicati a quel tipo di display: troverai lunghe discussioni sulle librerie e sulle loro applicazioni.
      Il primo stepper e conoscere il chip di controllo i2c, l’indirizzo i2c e le modalità di connessione del display.

    • Lino il 8 Aprile 2019 alle 15:40
    • Rispondi

    Ciao Mauro, sono alle prime armi con la programmazione di Arduino, ho realizzato un commutatore di antenna per radioamatori che con un selettore a 4 posizioni dove riesco a cambiare il tipo di antenna tramite dei relè 12v . Al momento riesco a visualizzare il tipo di antenna tramite dei diodi led che si accendono in base al numero del pin del selettore . Per renderlo più figo vorrei inserire all’interno Arduino con un Display display 16×2 e fare in modo che quando cambio posizione mi scriva il tipo di antenna. Purtroppo essendo alle prime armi non sò come fare con lo Sketch. Mi potresti aiutare te ne sarei grato….GRAZIE

    1. Ciao Lino,
      certamente la soluzione al tuo problema la conosci, è più semplice di quello che hai gestito fino ad ora.
      Non devi far altro che impostare una differente frase o testo per ogni led e quando accendi il led X usi i comandi di print per visualizzare sul display il testo corrispondente.

    • antonio il 23 Novembre 2020 alle 19:18
    • Rispondi

    ritieni utile equipaggiare il fancoil skudo con il controllo LCD più sistema Modbus a bordo con sonda temperatura e a che serve , inoltre se detto meccanismo potrebbe creare problemi di gestione , grazie antonio

    1. Ciao Antonio,
      perdonami ma non ho capito cosa vuoi realizzare e cosa non è chiaro di questo articolo.

  1. […] 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 un commento

Il tuo indirizzo email non sarà pubblicato.

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