LCD 16x2 con shift register e comunicazione SPI

Ciao a tutti ragazzi e buon anno!

Come da titolo sto cercando di pilotare un lcd tramite SPI. Ho trovato questa libreria modificata che sembra fare al caso mio. I collegamenti sono uguali allo schema frizzing presente (anche la massa del pin 5, che non è presente nello schema), l'IDE è arduino 1.0.6 su windows e la libreria è stata correttamente scaricata e sostituita a quella precedente (le ho provate tutte e due, sia per precedenti che più recenti di 1.0.6). Ovviamente ho riavviato l'IDE ma aprendo l'esempio HelloWord_SPI e compilando l'errore è il seguente:

 This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Duemilanove w/ ATmega328"
HelloWorld_SPI:47: error: no matching function for call to 'LiquidCrystal::LiquidCrystal(int)'
C:\Program Files (x86)\Arduino\libraries\NewLiquidCrystal/LiquidCrystal.h:72: note: candidates are: LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
C:\Program Files (x86)\Arduino\libraries\NewLiquidCrystal/LiquidCrystal.h:70: note:                 LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
C:\Program Files (x86)\Arduino\libraries\NewLiquidCrystal/LiquidCrystal.h:61: note:                 LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
C:\Program Files (x86)\Arduino\libraries\NewLiquidCrystal/LiquidCrystal.h:58: note:                 LiquidCrystal::LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
C:\Program Files (x86)\Arduino\libraries\NewLiquidCrystal/LiquidCrystal.h:48: note:                 LiquidCrystal::LiquidCrystal(const LiquidCrystal&)

Aldilà del fatto che il pin SS è il 10, e non il 9, cosa c'è di sbagliato?

Grazie in anticipo!

La cartella si deve chiamare come la libreria e quindi LiquidCrystal e non NewLiquidCrystal

Tutto ciò è strano! La libreria si chiamava proprio LiquidCrystal, l'ho rinominata nuovamente LiquidCrystal ed ha funzionato!

Ora però il problema sembra un altro: se non alimento i pin 15 e 16 del display questo neanche si accende, ed anche accendendosi i caratteri non compaiono :confused:

al 15 non gli mandare il Vcc diretto, metti una resistenza intorno ai 100 ohm perchè ha una corrente massima di assorbimento (solitamente 75mA ma andrebbe visto il datasheet del display) poi regola il trimmer e dovrebbero comparire i caratteri

Ho provato e riprovato ma niente :/ Leggendo ora l'integrato la sigla è M74HC595B1. È lo stesso oppure dovrei cambiarlo? (Ho provato anche con altri ma della stessa sigla)

prova a vedere se questo può esserti utile http://www.mcmajan.com/mcmajanwpr/?p=1604

Già fatto, ho usato l’esempio della libreria essendo lo schema anche uguale ma niente… il display funziona perché ogni tanto compaiono caratteri random, in contrasto funziona pure.

foto

foto

Purtroppo ho sistemato tutto perché a giorni torno all'università e porto le cose con me, potrò farla in un secondo momento. Comunque la prima cosa che farò sarà di cambiare l'integrato con un SN74HC595, ho da pinout che alcuni hanno nomi differenti (magari poi svolgeranno la stessa funzione, non saprei, dovrei studiarmeli prima o poi questi shift register!) In alternativa ho trovato questo.

Ciao a tutti, mi inserisco in questa discussione perchè non riesco in alcun modo a far arrivare "segnale" al display 16x2 di cui sono in possesso (sviluppato dalla MELT russa, datasheet http://www.melt.com.ru/docs/MT-16S2H_en.pdf) usando il 595.

Non riesco a capire se ha un ordinamento differente dei pin. Come vedete anche dalla foto, il pin 14 è all'estrema sinistra (tenendo l'header basso) e il numero 15 all'estrema sinistra. Ho trovato questa pagina russa, tradotta con Google per capire come vengono collegati i pin.

Ho seguito anche questo tutorial (http://playground.arduino.cc/Main/LiquidCrystal), senza fortuna... Ammetto che non ho propriamente compreso come funziona l'SPI!

Qualcuno di voi sa illuminarmi come devo interpretare il datasheet e usare la libreria SPI?

Finiti questi esami sono tornato a rompervi…

sto riprovando con questa configurazione http://playground.arduino.cc/Main/LiquidCrystal
schema e codici identici, ma non va.

Provo a comprare un altro shift register?
Eppure è una cosa che ho già fatto qualche volta, non ricordo quale guida avevo seguito, e lo shift register dovrebbe essere lo stesso (ne ordinai sicuramente più di uno)

Cambiato l'integrato, adesso è un SN74HC595N. il codice è il copia e incolla del link, il collegamento è lo stesso... che fare? :slightly_frowning_face:

il pin 5 del LCD ( R/W ) và collegato al GND

nella foto lo vedo libero

Brunello: il pin 5 del LCD ( R/W ) và collegato al GND

nella foto lo vedo libero

Fatto, resettato, ricaricato lo sketch.. ma non è cambiato niente :sweat_smile:

Ma tu hai copiato l'esempio del Playgorund o preso lo sketch HelloworldSPI che c'e' tra gli esempi ?

A me funziona

Potresti fare uno schema dei collegamenti? Con la foto è basta è difficile seguire il percorso dei fili.

Brunello: Ma tu hai copiato l'esempio del Playgorund o preso lo sketch HelloworldSPI che c'e' tra gli esempi ?

Li ho provati entrambi

leo72: Potresti fare uno schema dei collegamenti? Con la foto è basta è difficile seguire il percorso dei fili.

Lo schema è esattamente quello del link, con in più RW del LCD a ground (come suggeritomi da brunetto). potrei fartelo uno schema ma sarebbe una semplice copiatura di quello..

Edit: L'LCD è HD44780 quindi dovrebbe essere compatibile, e non sono mai riuscito ad usarlo. E' capitato che comparisse qualche carattere strano in prove precedenti, quindi dubito che sia proprio rotto.. o è successo qualcosa di strano, oppure boh. La libreria è stata scaricata dal link nel tutorial, versione per 1.0 e successive visto che ho 1.6.0. E' stata correttamente importata sull'IDE ed infatti compila bene.

Lo schema è esattamente quello del link

Probabilmente non lo è perché altrimenti funzionerebbe ;)

Quando i display HD44780 visualizzano quadratini pieni vuol dire che il driver si è inizializzato ma non riceve dati dalle linee di input. Nella maggior parte dei casi quindi o sono sbagliati i collegamenti o è sbagliato il pilotaggio dal programma.