LCD con Arduino uno R4

Ho un display LCD I2C, 4 righe 20 colonne, quale libreria usare con Arduino uno R4?
Sto iniziando un progetto con arduino uno r3, oggi mi è arrivato il r4, ho collegato i fili nella stessa posizione del r3, ho inviato il programma ma non esce nioente sullo schermo, dice ch la libreria LiquidCrystal_I2C.h non è compatibile.

Leggi per intero ed attentamente QUESTA discussione di qualche giorno fa ed avrai la soluzione (la discussione parla della GIGA, ma il problema è lo stesso).

Guglielmo

La libreria aggiornata (già con la correzione) è QUESTA ... guarda gli esempi per vedere come si usa.

Guglielmo

Avevo provato la libreria hd44780-master.zip presa da un'altra discussione. Mo provo quella da te linkata

SE hai letto la discusisone che ti ho indicato al post #2 avrai capito che la libreria è stata corretta pochi giorni fa e che quindi, quelle che ci sono in giro già scaricate, NON vanno più bene.

Ah, anche per te, vale quanto ho scritto QUI :wink:

Guglielmo

Ho disinstallato la vecchia libreria ed ho installato la nuova, con i vari esempi mi dà l'errore che vedi nella foto

Gli errori si riportano copiando/incollando e NON come immagini.

Comunque cambia nome a quella variabile, clock è probabilmente riservato nel core della R4 (ti sta dicendo che lo stai ridefinendo, quindi, probabilmente, già esiste).

Guglielmo

avevo appena messo in traduzione quando ho letto il tuo messaggio, cambiato nome e funziona. Questa libreria può essere usata anche per uno R3?

Può essere usata per qualisasi board dato che usa SOLO chiamate alla libreria standard Wire (per il bus I2C) e non fa accesso diretto alle risorse della MCU.

Se usi quell'esempio, consiglio di cambiare nome anche alla variabile check che, in altri core, è anch'essa riservata :wink:

Guglielmo

Con l'altra libreria avevo creato una freccia per navigare tra i menù, con questa libreria esce un campanello, l'avevo creata così:

byte freccia[8] = { // Disegna un carattere con la figura della freccia
  B00000,
  B00000,
  B00010,
  B11111,
  B00010,
  B00000,
  B00000,
  B00000
};
 lcd.createChar(0, freccia);  // Crea un carattere con la figura della freccia

invece in questa un carattere si crea così:

uint8_t bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
 lcd.createChar(0, bell);

Col sistema binario è più facile, con quello esadecimale come si crea?

Strano, come scrivi è solo una "rappresentazione", la sostanza è sempre un byte binario ...

B00010 equivale a 0000 0010 che è 2 in decimale
0x2 equivale sempre a 0000 0010 che è sempre 2 in decimale

Oh, considera che Bxxxxxx è una cosa che esiste SOLO in Arduino e che è definita nel file "binary.h" del "core" ma NON è una notazione standard. La notazione standard, che tutti i compilatori C/C++ capiscono, è decimale, ottale o esadecimale.

Altra cosa che conviene ti studi subito ... la "rappresentazione" in esadecimale dei numeri e a cosa corrispondono in binario (se dividi il byte in due parti da 4 bit "xxxx xxxx" diventa facilissimo capirlo e rappresentalo in esadecimale :wink: ).

Guglielmo

Parli di decimale ma nell'esempio è in esadecimale

2 decimale, in binario, non dovrebbe essere: 01000000

Ehhhh ??? ... 2 decimale è 0x02 in esadecimale e 0000 0010 in binario (sarà il caso che vai a rivederti i sistemi di numerazione ;)) e così via fino a 9, poi hai 10 decimale che 0x0A (0000 1010), 11 decimale che è 0x0B (0000 1011), 12 decimale che è 0x0C (0000 1100), 13 decimale che è 0x0D (0000 1101), 14 decimale che è 0x0E (0000 1110) ed infine 15 decimale che è 0x0F (0000 1111).

Nella numerazione binaria, in un byte, il nibble (4 bit) di sinistra è la parte più significativa, mentre il nibble di destra quella meno significativa: 27 26 25 24   23 22 21 20

Guglielmo

... e, come ti ho già detto, decimale, ottale, esadecimale ... sono solo delle forme di "rappresentazione", più o meno leggibile, della stessa cosa: un numero che, in memoria, è sempre una sequenza di bit che raggruppiamo in insiemi di 8 per formare un byte.

1110 1011 binario == 0xEB esadecimale == 0353 ottale == 235 decimale

Guglielmo

A scuola ho studiato esattamente il contrario. Anche quando devo settare dei dipswitch in qualche sistema che installo, parto sempre da sinistra per dare gli indirizzi, partendo da 1 e via dicendo.
Vuol dire che ricordo male io.

Ma perché?

Tu cento lo scrivi 001?

Direi proprio di SI ... puoi dare una letta QUI per rinfrescare le idee.

Guglielmo

Bella pagina da leggere. Grazie.

A post was split to a new topic: Encoder rotativo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.