(spero) piccolo problema con LCD

confermo il ritardo del LCD mi ha risolto i problemi
ho fatto così poi ho aggiunto anche una scritta per 3 secondi:

lcd.init();
Serial.begin(9600); // vedere se serve attivare il serial monitor
lcd.clear(); // pulisco il display LCD
lcd.setCursor(0, 0);
lcd.print("v 1.0 2012"); // versione programma
delay(3000); //provo a dare un tempo di setting
lcd.clear(); // ri-pulisco il display LCD e inizio il loop

e il ritardo quale sarebbe nel tuo caso? quei 3 secondi hanno la sola funzione di far vedere per quel tempo la scritta della versione software, non credo siano loro ad averti risolto il problema. Mi sarei aspettato un ritardo, anche di un solo secondo prima del print, però se ti funziona....

probabilmente al suo display basta il ritardo dovuto alla funzione Serial.Begin()

plrmntonio:
probabilmente al suo display basta il ritardo dovuto alla funzione Serial.Begin()

Vero, non c'avevo pensato, del resto l'ha pure scritto che i tre secondi erano per la scritta, ma questo era chiaro, solo che io ho pensato si riferisse a quelli; magari ci darà lui un chiarimento definitivo, sono curioso... :smiley:

Sono daccordo però visto che non creandomi problemi ho messo un delay dopo quella scritta invece di uno prima e uno subito dopo.

A me succedeva quando mancava il delay e partiva il loop sul display e mi dava simboli strani se non resettavo la scheda.
se non ricordo male forse non avevo messo neanche un lcd.clear(); nel setup :roll_eyes:

Subia75:
Sono daccordo però visto che non creandomi problemi ho messo un delay dopo quella scritta invece di uno prima e uno subito dopo.

A me succedeva quando mancava il delay e partiva il loop sul display e mi dava simboli strani se non resettavo la scheda.
se non ricordo male forse non avevo messo neanche un lcd.clear(); nel setup :roll_eyes:

Beh, alla fine l'importante è che funzioni, mica devi tenere una conferenza per spiegarne le ragioni tecniche :slight_smile:

Non volevo spiegare la storia della mia vita con arduino.

volevo solo mettere qualche indicazione in più sui passaggi che ho fatto, magari poteva venire fuori qualche dimenticanza che posso aver fatto nella mia breve esperienza di programmazione con arduino e che mi può aiutare la comprensione di altri errori.

tutto qui.

permettimi un paio di domande....

che board stai usando?
che versione del Compilatore?
a quali pin stai collegando il display?

ah un'altra domanda mi potresti passare la libreria?

Arduino uno R3
LCD 20x4 in I2C con i classici pin di comunicazione
compilata con la 0.23

ti allego la libreria che ho usato.

fammi sapere se ti funge.

LiquidCrystal_I2C.zip (323 KB)

la arduino uno r3(la stessa che ho io) ha 2 pin dedicati SDA ed SCL che poi corrispondono, penso, ai pin A4 e A5, io ho collegato il display a questi ultimi... anche tu immagino...

plrmntonio:
la arduino uno r3(la stessa che ho io) ha 2 pin dedicati SDA ed SCL che poi corrispondono, penso, ai pin A4 e A5, io ho collegato il display a questi ultimi... anche tu immagino...

sono perfettamente in parallelo, la comodità è quella di non doversi ogni volta ricordare quali sono questi due pin, stai tranquillissimo.

Confermo
non dovresti avere problemi a gestire il tuo LCD.

Hai provato a mettere quel delay nella fase di setup?

sto impazzendo davvero non riesco a capire perchè al primo avvio da caratteri strani sul display.... anche con lo sketch di esempio =( =(

plrmntonio:
sto impazzendo davvero non riesco a capire perchè al primo avvio da caratteri strani sul display.... anche con lo sketch di esempio =( =(

bisogna partire da un paio di punti fermi; se te la senti:
1 - posta una foto dei collegamenti, in modo che si possano vedere le saldature ed i collegamenti tra display e Arduino
2 - posta lo sketch, basta quello di prova
3 - conferma che subito dopo il primo avvio si mette a funzionare tutto finche non scolleghi Arduino.

Allora ti evito la foto dei collegamenti perchè non c'è solo il display collegato comunque... il display in questione è questo: http://www.ebay.it/itm/Arduino-IIC-I2C-TWI-1602-Serial-LCD-Module-Display?item=190573003243&cmd=ViewItem&_trksid=p5197.m7&_trkparms=algo%3DLVI%26itu%3DUCI%26otn%3D3%26po%3DLVI%26ps%3D63%26clkid%3D8649281261392473420#ht_4309wt_952

I pin che escono dal display sono collegati ad un pezzetto di millefori dove ci sono 42 fori, ai fori corrispondenti ci sono collegati dei fili di rame presi dal doppino telefonico, da li partono e vanno in altri due pezzetti di millefori uno 22 dove ci arrivano VCC, collegato su Arduino a +5 e GND collegato su Arduino al GND(lato pin analogici), nell'altro pezzetto SDA e SCL collegati ai pin A4 e A5.

lo sketch di esempio è questo:

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

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

Confermo che subito dopo il primo avvio se premo Reset tutto funziona alla perfezione...

la comoditá é che finalmente l'Arduino UNO R3 e l'Arduino MEGA 2560 R3 hanno i pin I2C sullo stesso posto e percui i shield I2C funzionano su entrambi.
Ciao Uwe

Allora tra le due righe:
lcd.backlight();
lcd.print("Hello, world!");

metti un delay(2000);

quindi:
lcd.backlight();
delay(2000);
lcd.print("Hello, world!");

e vedi che succede....

non cambia nulla...

una cosa che mi è sfuggita è che ogni volta che accendo arduino la prima riga del display si riempie di tutti quadrati bianchi...

se resetto non lo fa... ed ogni volta che lo fa non funziona... ora spiego meglio...

accendo arduino
tutti i quadrati bianchi e si accende il backlight
poi si spegne
poi si inizializza il display
si riaccende il backlight
di nuovo quadrati bianchi
non funziona...

se resetto
fa tutte le stesse operazioni eccetto i quadrati bianchi
funziona...

ci sono riuscito evviva!!!!

il problema era la libreria obsoleta.. ho utilizzato quella indicata nel topic Arduino Forum ed ho risolto :wink: proprio perchè il modello del mio LCD è prodotto da YwRobot