ho un progetto su Arduino Mega e, poichè necessitavo di più memoria, ho acquistato l'Arduino Mega R1. Purtroppo ho non pochi problemi nel trasportare il codice dal "vecchio" Mega al nuovo Giga (ho letto a causa dell'architettura diversa, che non è AVR ma STM).
Il problema principale è che non riesco a far funzionare il display LCD I2C 20x4 con le librerie LiquidCrystal e Adafruit.
Sapete darmi qualche indicazione su come posso affrontare tale problema? Qualcuno è riuscito a far funzionare i "vecchi" display LCD su Arduino Giga?
Cercando in rete ho letto che sul Giga dovrebbe funzionare il display Grove - LCD RGB Backlight (con la rispettiva libreria), però prima di acquistare altro hardware vorrei capire come e se posso recuperare quello che ho.
Buongiorno e benvenuto nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
Mmm ... mi sembra strano sia un problema di libreria (che, normalmente, si appoggiano sulla classica libreria Wire), credo più ad un problema di compatibilità hardware ...
Quei moduli LCD sono fatti per lavorare a 5V ed la GIGA invece lavora a 3.3V ... non solo, alimentando i moduli LCD I2C con i 5V hai 5V sulle pull-up del I2C e rischi anche di danneggiare la GIGA. Credo che sia d'obbligo alimentare il modulo LCD a 5V ed usare traslatori di livello per ciò che riguarda gli I/O (... bus I2C).
Grazie Guglielmo per il tuo intervento.
Ho sospettato di avere il problema con la libreria indicata, poichè ricevo errori durante la fase di compilazione, quando seleziono la scheda Arduino Giga R1 (preciso che lo stesso scketch non da errori di compilazione se seleziono la scheda Arduino Mega, che al momento funziona bene con lo sketch in uso).
Riporto l'errore dato dall'Ide in fase di compilazione:
"ATTENZIONE: la libreria LiquidCrystal_I2C dichiara di funzionare sulle architetture STM32 ARM e potrebbe non essere compatibile con la tua scheda che utilizza l'architettura mbed_giga"
"error: 'LiquidCrystal_I2C' does not name a type"
Ricevo anche altri errori di questo genere su altre librerie, ma non li riporto per non andare off-topic, visto che questo post riguarda la libreria per il display LCD I2C.
Quindi, il tutto da errore a monte ancora prima di procedere con i collegamenti hardware. Se non riesco a compilare lo sketch senza errori, non posso procedere con i collegamenti hardware.
Ok, potrebbe essere qualche cosa che è NON nel codice, ma nei files a "contorno" (quelli che servono per far vedere al IDE le caratteristiche della libreria).
C'è poi un problema con le infinite versioni di quella libreria ... ogni versione è leggermente diversa, con metodi incompatibili ... spesso un programma, che un tempo andava, ricompilandolo oggi con le attuali versioni, non va più, perché NON hanno garantito la retro compatibilità ed alcuni metodi sono cambiati
Allora, intanto installa manualmente e studiati gli esempi della libreria che ti allego che purtroppo NON è gestita dal "Library Manager" : PCF8574_HD44780_I2C.zip (522.4 KB) ... non dovrebbe dare problemi ...
C'è un thread dedicato ad essa QUI ed è anche su GitHub.
Fammi sapere se va (secondo noi, qui, è una tra le migliori) ...
Oh, comunque, una volta che tutto compila, ricorda quanto ti ho detto relativamente alle alimentazioni, poiché il problema della compatibilità hardware ci potrebbe essere (non ho mai incontrato display LCD che funzionassero a 3.3V ... ma mai dire mai ). Occhio invece ad alimentarli a 5V perché poi porti tali tensione sui pin del I2C e quindi DEVI usare un traslatore di livelli.
Grazie Guglielmo, avevo già provato la libreria "PCF8574_HD44780_I2C-main", comunque l'ho cancellata e ho installato quella che mi hai postato. Ho provato col semplice esempio "Helloworld.ino", purtroppo non riesce a compilare con la scheda Arduino Giga R1.
La compilazione, invece, avviene senza errori selezionando Arduino Mega.
Sto continuando a cercare soluzioni, prima di gettare la spugna ed acquistare un altro display compatibile con il Giga.
Vi aggiorno se ho novità in merito, grazie
In ambiente AVR è presente in <avr/sfr_defs.h> (AVR libc) e quindi automaticamente definita ... effettivamente, per altri ambienti, va dichiarata espressamente ...
Grazie mille! Adesso compila senza errori
Devo procurarmi un traslatore di livello come diceva Guglielmo e fare la prova del 9. Grazie mille, vi aggiorno...