Lcd i2c non vuole funzionare su MKR1000

Salve a tutti, chiedo il vostro aiuto per un problema che mi sta facendo penare già da qualche giorno, allora vorrei collegare uno schermo i2c 1602, alla MR1000 con arduino nano non ho avuto problemi e nemmeno con uno ma quando provo a integrare il codice con la MKR 1000 non riesco ne a richiamare i dati ne a visualizzare il testo come vorrei, secondo voi qual'è il problema? qualcuno ha gia risolto problemi simili?
quale libreria mi consigliate?

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

DOPO che avrai fatto quanto richiesto sopra ...
... hai verificato che qul modulo I2C sia adatto ai segnali a 3.3V della MKR1000 ? ? ? Perché la Nano lavora a 5V, ma non la MKR1000 che, appunto, lavora a 3.3V.

Guglielmo

Si ho già verificato se il problema fossero i 3.3 v, comunque con una delle librerie sono riuscito a visualizzare il testo ma purtroppo non riesco ad impostare il colore dei pixel da nero a bianco, e a visualizzare i dati provenienti dai sensori.
Il problema e che in rete non trovo molta documentazione su questo tema, comunque nel rispetto del regolamento mi presenterò a dovere nella sezione apposita.

Che libreria usi?? Non dare informazioni con il contagocce... :wink:
Se usi la u8glib e se non ricordo male dovrebbe essere:

u8g.setColorIndex(0) // per impostare il testo con pixel spento
88g.setColorIndex(1) // per impostare il testo con pixel acceso

Adesso sto usando questa libreria:
-"LiquidCrystal-I2C-library-master"
con cui mi trovo bene e riesco a far girare gli esempi in maniera corretta ma non ancora riesco a cambiare il colore ai pixel dove trovo specifiche per il comando necessario? ho letto gli allegati ma mi sembra di non trovare niente

risolto problema pixel, aveva ragione -gpb01

gpb01:
... hai verificato che qul modulo I2C sia adatto ai segnali a 3.3V della MKR1000 ? ? ? Perché la Nano lavora a 5V, ma non la MKR1000 che, appunto, lavora a 3.3V.

Guglielmo

ho risolto con un adattatore del segnale da 5 a 3.3V (ne avevo qualcuno ma non li avevo mai provati) e ho preso l'alimentazione da un altra scheda per i test

Bene, grazie per la verifica e la conferma che ... sarà magari utile per altri utenti :slight_smile:

Guglielmo

Dimenticavo i moduli che ho usato per risolvere il problema sono dei convertitori di livello logico.

Il dispositivo ha bisogno di essere alimentato da due fonti "tensioni" (alta tensione e bassa tensione) che il sistema sta utilizzando.
Alta tensione (ad esempio 5V) al pin "hv", bassa tensione ( per esempio 3.3V) al pin "lv", e di massa dalla scheda al pin "GND".
E infine collegate i vari pin sui relativi canali es: pin3 ingresso canale 1 (3v), uscita canale 1 (5v).

Buongiorno,

riprendo questo vecchio post perchè anche io mi sto imbattendo nello stesso problema e la soluzione data non è molto chiarificatrice. Utilizzo un display LCD 20x4 con la scheda I2C e MKR1000 collegati attraverso un level converter. Le connessioni che ho fatto sono le seguenti

MKR1000 LEVEL CONVERTER (LOW) LEVEL CONVERTER (HIGH) DISPLAY
VCC(3.3V) LV --- VCC(+5v da MKR1000)
GND GND GND GND
SCL RXO RXI SCL
SDA TXI RXO SDA

Come libreria sto usando

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);
...

Il display si illumina e vengono visualizzate solo due righe, la prima e la terza con dei rettangoli completamente bianchi per ciascun carattere.

Se fosse possibile vorrei avere lo schemino delle connessioni usando il level converter ed uno stralcio di codice da cui si evinca la libreria utilizzata ed il comando per inizializzare correttamente il dislplay LCD.

Grazie e saluti
Enzo Stefanazzi

Beh, intanto i 5V li devi dare anche su HV del level converter ! :slight_smile:

Guglielmo

Ciao Guglielmo,

e grazie per la risposta.
Ho provato a rimuovere tutto il resto del circuito ed a collegare il display direttamente ad Arduino MKR1000 nel seguente modo:

MKR1000 - I2C Display
+5V - VCC
GND - GND
SDA(11) - SDA
SCL(12) - SCL

Poi ho usato lo stesso codice del post precedente e tutto è andato alla perfezione.

Chissà se alla lunga la scheda Arduino mi abbandonerà? Al momento, dopo un'oretta di funzionamento sta andando ancora.

Visto che ci siamo, vorrei chiederti se hai un link per approfondire meglio il funzionamento di I2C magari con le differenze tra MCU a 5V ed MCU a 3.3. Vorrei aggiungere una 24C64 esterna e sto già piangendo :slight_smile:

Grazie ancora

Colto dall'entusiasmo del momento, dopo un giorno di depressione, ho provato a collegare una EEPROM esterna ST24C64-WP.
Anche in questo caso il collegamento diretto ad MKR1000, insieme al display che era già collegato, ha funzionato perfettamente.
Se può servire a qualcuno lo schema è il seguente

MKR1000 - I2C Display - ST24C64-WP
+5V - VCC - VCC
GND - GND - GND
SDA(11) - SDA - SDA
SCL(12) - SCL - SCL

Per l'accesso alla memoria ho usato la libreria extEEPROM.

Ciao
Enzo

Non credo che gli ingressi del MKR tollerino i 5V (la scheda lavora a 3.3V) ... se le pull-up presenti sulle cose che colleghi sono verso i +5V ... prima o poi danneggi la MKR.

Guglielmo