Newsgroup: it.hobby.elettronica.digitale
Titolo: LCD 16x2 i2C: nessun carattere

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.


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
 

Abbiamo risposto in it.hobby.elettronica
 
---
Questa email Ã¨ stata esaminata alla ricerca di virus da AVG.
http://www.avg.com
 
 

 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.
 
 
 
 

 solo tu puoi sapere se ha senso farlo
 
e infatti io so che DEVE essere inizializzata per garantire il flusso dati

 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
 

 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
 
 

 
 
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

 Spero ti possano far comodo i miei 2 cents.
 
sì grazie
 
 


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
 

 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
 
 

 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 ;-)


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.