Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

LCD 16x2 i2C: nessun carattere

107 views
Skip to first unread message

jova

unread,
Aug 25, 2017, 1:17:44 PM8/25/17
to
Ho usato 3 librerie diverse <LiquidCrystal.h> trovate in rete ma il
problema è sempre lo stesso, si illuminano solo i 16 quadratini della
riga superiore, quella inferiore buio totale e provandolo con uno sketch
banalissimo non appare alcun carattere sul display. Funziona tutto,
potenziometro del contrasto, retroilluminazione, Arduino e i 4 fili sono
connessi correttamente VCC, GND, SDA e SCL

http://blog.mklec.com/wp-content/uploads/2015/05/I2C_Serial_Display_Adapter_Module-3-Edit.jpg

Sembra un problema abbastanza diffuso quello di non visualizzare niente
sul display... qualcuno risolve cambiando libreria ( fatto già ma
ciccia), altri cambiando l'ambiente IDE ( cosa che per adesso mi rifiuto
di fare anche perchè queste prove le ho fatte all'inizio dei miei
esperimenti e mi sono fermato alla versione 1.6.6). Se cambio IDE non mi
funziona più quello che adesso gira bene.

Zio Fester

unread,
Sep 5, 2017, 1:07:52 PM9/5/17
to
Guarda questi 2 link
http://www.datsi.fi.upm.es/docencia/Informatica_Industrial/DMC/LCD-Blue-I2C.htm

http://arduino-info.wikispaces.com/LCD-Blue-I2C#v3

-------------------------------------

Scaricati l'ultima versione della libreria
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

-------------------------------------

controlla indirizzo I2C, ponticelli A0, A1, A2 aperti 0x20, tutti
chiusi, 0x27

LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

------------------------------------

attenzione corrispondenza pin, devono essere definiti correttamente
nella libreria

LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

La corretta numerazione dei pin la ricavi confrontando lo schema della
schedina che hai I2C e quella del datasheet del display che usi

Guarda lo schema riportato sotto la voce:
"MORE INFORMATION ABOUT THE I2C "BACKPACK" USED ON THESE DISPLAYS:
Schematic Diagram:"
che trovi nel link
http://arduino-info.wikispaces.com/LCD-Blue-I2C#v3

LAB

unread,
Sep 6, 2017, 3:40:37 AM9/6/17
to
Abbiamo risposto in it.hobby.elettronica

---
Questa email è stata esaminata alla ricerca di virus da AVG.
http://www.avg.com

jova

unread,
Sep 8, 2017, 5:29:48 PM9/8/17
to
Il 05/09/2017 19.07, Zio Fester ha scritto:
> Guarda questi 2 link...

come detto da LAB, "QUEL" problema l'ho risolto grazie a lui su
it.hobby.elettronica, ma adesso ne ho uno di tipo software, almeno
sembra: una specie di incompatibilità con le seguenti istruzioni

if (Usb.Init() == -1)
{while(1);}

Che dovrebbero voler significare che finchè la porta usb non si attiva,
si rimane dentro il loop, appena attiva si esce dal loop.
La cosa strana è che se quel loop viene eseguito, funziona tutto quel
che mi interessa, ovvero bluetooth e porta usb.
Se non viene eseguito, semplicemente commento le istruzioni,

// if (Usb.Init() == -1)
// {while(1);}

non funziona più nulla e dopo qualche minuto si freeza tutto.




mmm

unread,
Sep 9, 2017, 2:41:15 AM9/9/17
to
Il 08/09/2017 23:29, jova ha scritto:
> Il 05/09/2017 19.07, Zio Fester ha scritto:
>> Guarda questi 2 link...
>
> come detto da LAB, "QUEL" problema l'ho risolto grazie a lui su
> it.hobby.elettronica, ma adesso ne ho uno di tipo software, almeno
> sembra: una specie di incompatibilità con le seguenti istruzioni
>
> if (Usb.Init() == -1)
> {while(1);}
>
> Che dovrebbero voler significare che finchè la porta usb non si attiva,
> si rimane dentro il loop, appena attiva si esce dal loop.

errore, vuol dire:
Se l'inizializzazione della USB fallisce ALLORA fermati e non fare piu'
nulla.

quello che dici tu sarebbe ( al posto di tutto l'if

while (Usb.Init()==-1)
;


attento che pero' questo statement prova continuamente ad inizializzare
la Usb, solo tu puoi sapere se ha senso farlo


> La cosa strana è che se quel loop viene eseguito, funziona tutto quel
> che mi interessa, ovvero bluetooth e porta usb.
> Se non viene eseguito, semplicemente commento le istruzioni,
>
> // if (Usb.Init() == -1)
> // {while(1);}
>
> non funziona più nulla e dopo qualche minuto si freeza tutto.
>

e questo potrebbe avere senso perche' non iniziallizzi la Usb ...
>
>
>

jova

unread,
Sep 9, 2017, 4:36:11 AM9/9/17
to
Il 09/09/2017 08.41, mmm ha scritto:

> errore, vuol dire:
> Se l'inizializzazione della USB fallisce ALLORA fermati e non fare piu'
> nulla.
>
> quello che dici tu sarebbe ( al posto di tutto l'if
>
> while (Usb.Init()==-1)

hai ragione, ho usato impropriamente il "finchè"


> attento che pero' questo statement prova continuamente ad inizializzare
> la Usb,

quindi, se non ho capito male, l'istruzione (Usb.Init()==-1) farebbe due
cose contemporaneamente come

1) inizializzare la porta
2) verificare che sia inizializzata ?

So solo che da quando ad Arduino uno ho aggiunto un LCD 1602 la porta
usb non funziona e pensando che l'lcd potesse andare in conflitto con la
seriale di Arduino ho aggiunto un modulo i2C, pensando che con l'uso di
solo 2 fili diminuissero le criticità, e invece non è cambiato niente.

> solo tu puoi sapere se ha senso farlo

e infatti io so che DEVE essere inizializzata per garantire il flusso dati

mmm

unread,
Sep 9, 2017, 5:46:10 AM9/9/17
to
Il 09/09/2017 10:36, jova ha scritto:
> Il 09/09/2017 08.41, mmm ha scritto:
>
>> errore, vuol dire:
>> Se l'inizializzazione della USB fallisce ALLORA fermati e non fare
>> piu' nulla.
>>
>> quello che dici tu sarebbe ( al posto di tutto l'if
>>
>> while (Usb.Init()==-1)
>
> hai ragione, ho usato impropriamente il "finchè"
>
>
>> attento che pero' questo statement prova continuamente ad
>> inizializzare la Usb,
>
> quindi, se non ho capito male, l'istruzione (Usb.Init()==-1) farebbe due
> cose contemporaneamente come
>
> 1) inizializzare la porta
> 2) verificare che sia inizializzata ?
>

non lo so!
leggi la documentazione ed avrai la risposta su cosa esattamante fa

> So solo che da quando ad Arduino uno ho aggiunto un LCD 1602 la porta
> usb non funziona e pensando che l'lcd potesse andare in conflitto con la
> seriale di Arduino ho aggiunto un modulo i2C, pensando che con l'uso di
> solo 2 fili diminuissero le criticità, e invece non è cambiato niente.
>
>> solo tu puoi sapere se ha senso farlo
>
> e infatti io so che DEVE essere inizializzata per garantire il flusso dati

anche qui eventuali conflitti li puoi trovare solo nella manualistica

P.S: non frequento quella classe di micro per cui non sono in grado di
aiutarti su problemi specifici della piattaforma

jova

unread,
Sep 9, 2017, 6:30:25 AM9/9/17
to
Il 09/09/2017 11.46, mmm ha scritto:
> Il 09/09/2017 10:36, jova ha scritto:
>> Il 09/09/2017 08.41, mmm ha scritto:
>>
>>> errore, vuol dire:
>>> Se l'inizializzazione della USB fallisce ALLORA fermati e non fare
>>> piu' nulla.
>>>
>>> quello che dici tu sarebbe ( al posto di tutto l'if
>>>
>>> while (Usb.Init()==-1)
>>
>> hai ragione, ho usato impropriamente il "finchè"
>>
>>
>>> attento che pero' questo statement prova continuamente ad
>>> inizializzare la Usb,
>>
>> quindi, se non ho capito male, l'istruzione (Usb.Init()==-1) farebbe due
>> cose contemporaneamente come
>>
>> 1) inizializzare la porta
>> 2) verificare che sia inizializzata ?
>>
>
> non lo so!

boh... mi sembra lo avessi detto tu correggendomi

>>> errore, vuol dire:
>>> Se l'inizializzazione della USB fallisce ALLORA fermati e non fare
>>> piu' nulla. ( cosi sembra che lo statement effettui un controllo)

e poi

>>> attento che pero' questo statement prova continuamente ad
>>> *inizializzare* la Usb ( e cosi che inizializzi la porta)

va bè indagherò sulla documentazione.
grazie


Deh!

unread,
Sep 9, 2017, 9:30:49 AM9/9/17
to
Il 09/09/2017 10:36, jova ha scritto:
> Il 09/09/2017 08.41, mmm ha scritto:
>
>> errore, vuol dire:
>> Se l'inizializzazione della USB fallisce ALLORA fermati e non fare
>> piu' nulla.
>>
>> quello che dici tu sarebbe ( al posto di tutto l'if
>>
>> while (Usb.Init()==-1)
>
> hai ragione, ho usato impropriamente il "finchè"
>
>
>> attento che pero' questo statement prova continuamente ad
>> inizializzare la Usb,
>
> quindi, se non ho capito male, l'istruzione (Usb.Init()==-1) farebbe due
> cose contemporaneamente come
>
> 1) inizializzare la porta
> 2) verificare che sia inizializzata ?
>

while (Usb.Init()==-1)

==

while (1)
{
a = usb.Init ()
if (a != -1)
(
break;
}
}

o mille altri modi, piu' o meno incasinati, di scrivere la chiamata a
funzione con un valore di ritorno.
La funzione Usb.init () abilita o disabilita varie cose della periferica
Usb, attiva o disattiva determinati flag e interfacce e ritorna un
valore che dipende dallo stato della periferica Usb al momento di fine
funzione.
Spero ti possano far comodo i miei 2 cents.
ciao
Angelo

jova

unread,
Sep 9, 2017, 11:08:33 AM9/9/17
to
Il 09/09/2017 15.30, Deh! ha scritto:
> while (1)
> {
>   a = usb.Init ()
>   if (a != -1)
>   (
>     break;
>   }
> }
>
> o mille altri modi, piu' o meno incasinati, di scrivere la chiamata a
> funzione con un valore di ritorno.

ok, quindi ritorna un intero e a seconda dell'intero ha un significato ?

> La funzione Usb.init () abilita o disabilita varie cose della periferica
> Usb, attiva o disattiva determinati flag e interfacce e ritorna un
> valore che dipende dallo stato della periferica Usb al momento di fine
> funzione.

non riesco a trovare documentazione su questa funzione Usb.init()


> Spero ti possano far comodo i miei 2 cents.

sì grazie


Deh!

unread,
Sep 10, 2017, 9:46:27 AM9/10/17
to
E' una funzione implementata dallo stack Usb che stai usando!
Cercala fra i vari files e la toverai sicuramente, ma per la
documentazione, diventera' difficile in quanto troverai le chiamate a
varie funzioni di inizializzazione della periferica Usb e delle
variabili collegate, compresi endpoint e Ram/Rom Usb dipendentemente dal
micro che stai usando.
Se posso aiutarti, prova a chiedere su qualcosa di specifico, ma non
sara' facile.
Hai dato uno sguardo a USB.ORG e a BEYONDLOGIC???
ciao
Angelo

GIulia

unread,
Sep 10, 2017, 10:20:55 AM9/10/17
to
>> quindi, se non ho capito male, l'istruzione (Usb.Init()==-1) farebbe due
>> cose contemporaneamente come
>>
>> 1) inizializzare la porta
>> 2) verificare che sia inizializzata ?
>>
>
> non lo so!
> leggi la documentazione ed avrai la risposta su cosa esattamante fa

Ragazzi STOP!

Leggetevi prima un bel corso di C/C++ e cominciate a fare qualche programmino sul pc per pc,
dall "hello word" fino alla scrittura su file ecc ecc..

Vi mancano totalmente le basi e faticate il triplo del necessario.

In c/c++ -1 e' una convenzione sull errore tornato da una funzione,
quella che voi chiamate "istruzione" sono due cose ben distinte una chiamata a funzione
e un operatore logico ,
ribadisco corso c e programmini in c su pc per pc.

Mettete arduino nel cassetto!!

Giulia


jova

unread,
Sep 10, 2017, 1:16:10 PM9/10/17
to
Il 10/09/2017 16.20, GIulia ha scritto:
>>> quindi, se non ho capito male, l'istruzione (Usb.Init()==-1) farebbe due
>>> cose contemporaneamente come
>>>
>>> 1) inizializzare la porta
>>> 2) verificare che sia inizializzata ?
>>>
>>
>> non lo so!
>> leggi la documentazione ed avrai la risposta su cosa esattamante fa
>
> Ragazzi STOP!
>
> Leggetevi prima un bel corso di C/C++...


ho smesso di lavorarci, anche pesantemente ( C non C++), quasi 26 anni
fa, penso che un pò di ruggine ci stia ;-)

jova

unread,
Sep 10, 2017, 6:30:26 PM9/10/17
to
sì ho dato uno sguardo, ma molto in superficie. Però ho la sensazione
che Arduino UNO e l'LCD 1602 non si amino troppo, perchè finora Arduino
riesce a ricevere e gestire i messaggi midi inviati via bluetooth da un
tablet/cellulare, poi li trasmette alla mia strumentazione tramite
seriale e tutto funza, ma evidentemente chiedo troppo quando aggiungo un
LCD in cui vorrei far visualizzare i titoli delle canzoni associati ai
messaggi midi di cui sopra. A quel punto va tutto in tilt.
0 new messages