Ciao a tutti, ho collegato un display lcd (lcd03 devantech 2x16) tramite I2C ad Arduino UNO R3 (mettendo resistenze di pull-up da 2KOhm sui collegamenti I2C).
ho trovato il modo di inviare scritte e comandi (cursore,illuminazione,ecc) tramite libreria Wire però non ho capito come inviare il valore decimale di una variabile (sensore temperatura) senza che questo venga interpretato come un comando.
ad esempio chiamando una variabile "temp":
temp = 10; (naturalmente al posto di 10 ci sarà analogRead...)
Wire.write(temp);
in questo modo al display arriva 10 che corrisponde ad un comando
Come invio il valore?
grazie
ps:un altro dubbio che ho,il primo comando tramite Wire.write dopo il Wire.beginTransmission il display non me lo legge.C'entra qualcosa il numero di bit inviati da Arduino sul bus?
I numeri piú grandi di 32 li interpreta come caratteri.
http://playground.arduino.cc/Code/LCDi2c
La libreria dovrebbe essere quella per i display della robot-electronics dove non funziona il download dal link indicato.
Prova il link nel ultimo rply:
ciao innanzitutto grazie per la risposta, ho provato questa libreria ma caricando un esempio (LCD_test) mi da questo errore:
LCDi2cW lcd = LCDi2cW(2,16,0x4C,0); (riga di sketch evidenziata)
'LCDi2cW' does not name a type
ho provato ad installare questa:
creando una cartella nelle librerie ma è come se non la riconoscesse, cioè quando la chiamo nello sketch non si colorano i caratteri ma restano neri...
Hai chiuso e riaperto il IDE dopo aver copiato la libreria.
Ha dato il nome giusto alla cartella dove hai messo la libreria?
Dacci lo sketch che hai usato.
Ciao Uwe
L'ultima versione dell'IDE è la 1.0.3 e la trovi qui --> http://arduino.cc/en/Main/Software
Le librerie ti conviene metterle all'interno la cartella "libraries" che è dentro la cartella "Arduino" che contiene gli sketch.
A seconda del S.O. utilizzato la cartella Arduino ha diversi percorsi. Su Windows la trovi dentro "Documenti".
Se dentro la cartella "Arduino" non trovi "libraries" creala.
I comandi delle librerie si colorano, ovvero vengono riconosciute dall'IDE come tali, solo se nella libreria è presente il file keyword.txt che deve contenere l'elenco dei comandi/funzioni usate dalla libreria.
Nel 90% dei casi non è presente. Se lo dimenticano quasi tutti gli autori. Non preoccuparti. Non è un problema.
Gringo:
ciao innanzitutto grazie per la risposta, ho provato questa libreria ma caricando un esempio (LCD_test) mi da questo errore:
LCDi2cW lcd = LCDi2cW(2,16,0x4C,0); (riga di sketch evidenziata)
La libreria che hai linkato semplicemente non definisce una classe LCDi2cW ma solo LCD_i2cR.
Sul Playground ho trovato questa pagina: http://playground.arduino.cc/Code/LCDAPI
Lì si parla di una LCDi2cR ma il link porta ad un sito Apple che non funziona più.
O modifichi l'esempio che stai usando con il nuovo nome LCD_i2cR oppure contatti l'autore e chiedi a lui.
Ciao..
Io sinceramente uso questa libreria, LiquidCrystal_I2C, per il dialogo con un display 20x4 e con un semplice lcd.print "stampo" qualunque cosa nel lcd.
Non so se ti può essere d' aiuto.
ciao a tutti eccomi qui,
allora la libreria LiquidCrystal_I2C non funziona (non da proprio segni di vita col mio display).
ho scaricato l'ultima versione dell'IDE (1.0.3 avevo la 1.0.2) e ho scaricato la libreria LCDi2cW-1_0_2.zip e ho preso i 2 file .h e .cpp e li ho sostituiti a quelli LCDi2cR e rinominato la cartella LCDi2cW e sembra comunicare col display ma in modo non esatto cioè quando apro l'esempio lcd_test compare il cursore e il display si illumina ad intermittenza ma non seguendo il programma (che dovrebbe anche far comparire la scritta Hello World che non compare).
ragazzi alla fine a me servirebbe solo far comparire il valore della temperatura che è una variabile il resto lo faccio tramite Wire...
devono corrispondere al tuo display: Righe, Colonne, Indirizzo I2C, numero del display (per il momento 0).
Per conoscere l'indirizzo lascia tutto collegato e carica questo sketch --> http://playground.arduino.cc/Main/I2cScanner
allora l'indirizzo lo conosco, lo uso già con la libreria Wire (è 0x63).
quando modifico quei 2 valori rows e cols il display smette di illuminarsi ma il cursore continua a lampeggiare e spostarsi...credo che questa libreria non sia compatibile col mio display.
stavo pensando ad una soluzione: se mi accontentassi di vedere il valore della temperatura con sole 2 cifre senza decimali da -20 a 60 gradi
se io mettessi una serie di if sarebbe lungo ma funzionerebbe cioè:
if (temperatura=20){
Wire.write("20");
ho pensato di separare le decine dalle unità per risparmiare numero di if,
ci sarebbe un modo meno laborioso?
Se cerchi ci sono diverse discussioni in cui si è trattato il problema di come formattare proprio una temperatura (o comunque un numero decimale) per la stampa su display o su seriale .