Collegamento diplay lcd ad Arduino via i2c con mcp23017

Questo semplice tutorial è pensato per quei progetti che richiedono l'uso di un numero di porte maggiore di quelle che il vostro Arduino Uno può offrirvi.
Infatti, grazie all'uso di un I/O expander (in questo caso il Microchip MCP23017) è possibile moltiplicare le porte a nostra disposizione.
Uno di questi ci permette di aumentare il numero delle porte fino a 16, che possono essere impostate sia come ingressi che come uscite.



Un dispositivo che senza dubbio richiede molti pin è il display LCD, ed è per questo che ho messo un esempio di collegamento proprio per questo dispositivo.
Infatti dalle 7 porte normalmente necessarie al collegamento, ridurremo questo numero a 2 soltanto, cosa che ci tornerà sicuramente utile nella realizzazione di grossi progetti.
Vediamo un video che ne dimostra il funzionamento:




Questo è lo schema da realizzare, ho cercato di farlo il più chiaro possibile, ma se avete dei dubbi non esitate a chiedere!




Fatto questo potete procedere al caricamento dello sketch, ma prima dovete scaricare questa libreria e copiare il file estratto nella cartella "libraries" di Arduino.

  1. #include <Wire.h>
  2. #include <LiquidTWI2.h>
  3. // Connessione via i2c, indirizzo di default (0)
  4. LiquidTWI2 lcd(0);
  5. void setup() {
  6.   // imposta il tipo di integrato usato
  7.   // (togli le virgolette da quello usato)
  8. //lcd.setMCPType(LTI_TYPE_MCP23008);
  9.   lcd.setMCPType(LTI_TYPE_MCP23017);
  10.   // imposta il tipo di lcd (colonne, righe)
  11.   lcd.begin(16, 2);
  12.   // scrivi un messaggio sull'lcd.
  13.   lcd.print("danielealberti");
  14.   lcd.setCursor(13, 1);
  15.   lcd.print(".it");
  16. }
  17. void loop() {
  18.   // preparati a scrivere nella colonna 0, riga 1
  19.   // (nota: la riga 1 è la seconda, il conteggio inizia da 0)
  20.   lcd.setCursor(0, 1);
  21.   // scrivi il numero dei secondi (nella posizione impostata prima)
  22.   lcd.print(millis()/1000);
  23. }

Questo è tutto, come al solito per qualunque problema lasciate un commento qua sotto, Ciao!!
Segui Daniele Alberti su Google+

16 commenti:

  1. Salve! Ora sto provando di seguire questa indicazione per fare funzionare la mia lcd 16x2, lo seguito verramento tutto ma non funziona proprio...lo verificato di collegare direttamente sul mio arduino il Lcd ma funziona. secondo lei quale sarà il fatto che la mia non funzione proprio...?

    RispondiElimina
  2. Lei mi potrebbe aiutare perché sto facendo un lavoro su rilevatore della sistema ambientale e mi serva di seguire tutti i valore come il sensore della temperatura, sensore di luminosità e il valore della sensore di prossimità sulla mia Lcd 16x2...mi serva tanti pin mentre uso arduino uno che lo sapiamo che ha pochi pin...cosa devo fare per il collegamento di questo mcp23017 con lcd 16x2 e arduino uno...? quale libreria lo posso usare...perché non ho capito come mai che non funziona la mia lcd

    RispondiElimina
    Risposte
    1. Forse c'era un problema con la libreria, l'ho spostata su Google Drive, prova a riscaricarla dal link nel post. Fammi sapere!! Ciao!

      Elimina
  3. Buongiorno Daniele.
    Ho appena terminato di assemblere il Suo progetto con Lcd ed Mcp23017, il quale funziona alla perfezione.
    Le chiedevo se tale progetto riesce a gestire, cambiando i parametri righe e colonne, i display 16x4.
    La ringrazio e complimenti per il suo sito.
    Usvardi Guido

    RispondiElimina
    Risposte
    1. Si certo, dovrebbe essere necessario solo cambiare la riga 13 facendola diventare:
      lcd.begin(16, 4);

      Elimina
    2. Grazie. Ho provato con un Lcd 20x4 modificando l'istruzione e funziona perfettamente.
      Le chiedo se fosse possibile usare i pin rimasti liberi del 23017 come I/O aggiuntivi.
      Saluti e buon Ferragosto !!!

      Elimina
    3. Ciao, che io sappia si ma non ho mai provato, anzi se ci riesci e vuoi condividere il tuo lavoro possiamo fare un post qui sul blog!

      Elimina
  4. Ha funzionato per 21 secondi poi...morto !
    Ho un 20 x 4 anche io, ed ora ho le due righe 0 e 2 completamente bianche, e le altre due la 1 e la 3 completamente nere. Che puo' essere ?!!??!

    RispondiElimina
    Risposte
    1. Prova a ricollegare il display in modo tradizionale per verificare che non si sia danneggiato

      Elimina
  5. Salve, le chiedo come si fa a trovare una libreria per far funzionare arduino con un lcd 16x2 con i2c e un rtc sempre con i2c.
    Complimenti per il sito
    Saluti
    Unberto

    RispondiElimina
    Risposte
    1. Ciao, grazie per i complimenti!
      la libreria per il display è quella che trovi in questo post,
      per il modulo RTC puoi trovarla qui:
      http://www.danielealberti.it/2014/03/visualizza-data-e-ora-su-un-display-con.html

      Elimina
  6. Ciao Daniele, grazie per la tua risposta rapida, ma non riesco a far funzionare arduino uno anche perchè e la prima volta che provo a programmare.
    Grazie per tutto quello che fai.
    Umberto

    RispondiElimina
  7. Come faccio a collegare 3 lcd con 3 circuiti integrati?

    RispondiElimina
    Risposte
    1. Ciao, devi realizzare 3 circuiti MCP/display (oppure usare 3 display i2c) e collegarli al bus i2c (pin A4 A5), infine dichiarare nello sketch gli altri 2 display con diversi indirizzi.

      Elimina
    2. Devo collegare 3 display con lo stesso sketch

      Elimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Related Posts Plugin for WordPress, Blogger...