LCD I2C 1602, comportamento ... e tasto reset

Buongiorno a tutti.
Ho recentemente comprato un LCD 16x2 con interfaccia I2C.
Pensando che le librerie a corredo di Arduino fossero adeguate "LiquidCrystal_I2C", ho provato gli sketch di esempio ma il risultato è stato pessimo (non funzionava). Ho scaricato quindi le librerie (sempre "LiquidCrystal_I2C") dal sito da cui ho comprato l'oggetto (ebay http://www.ebay.it/itm/190573003243?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649) ed ora tutto (o quasi) funziona regolarmente.

La domanda è questa:
Ho scoperto che dopo aver caricato gli sketch, oppure dopo aver tolto l'alimentazione ad Arduino, occorre premere il tasto reset altrimenti il display scrive caratteri assurdi ed incomprensibili. E' una cosa naturale? dopo aver staccato la batteria ad arduino, se si rialimenta il tutto, per certe periferiche (LCD su I2C) occorre per forza premere il tasto reset?

Sembra quasi che rialimentando arduino, il codice non sia rieseguito sin dall'inizio (vedi setup della periferica LCD) ma che riprenda da un punto scordandosi l'inizializzazione (questo lo penso io che non se so un tubo).

Grazie a tutti,
Tredipunta.

Gli LCD con interfaccia I2C sono normali display paralleli che hanno un piccolo microcontrollore (tipo un Atmega168 SMD) che funge da convertitore tra il bus I2C per collegarlo all'Arduino ed il bus parallelo che serve per pilotare l'LCD. Non vorrei che il reset servisse a questo chip piuttosto che all'Arduino perché magari il suo firmware non prevede la perdita della connessione con il master e che quindi non riceva più i comandi o scriva caratteri a caso che compaiono durante il reset sulla linea.

Hai i sorgenti del firmware del chip che gestisce l'LCD?

Hai provato di mettere un delay di 10 mSec dopo la funzione di inizializzazione ?
Ciao Uwe

Sulla mia stazione meteo, se ti ricordi ho un 328 collegato via I2C ad un Tiny84 che gestisce il display, ho avuto un problema simile. Ho dovuto collegare le linee di reset insieme perché se resettavo solo il 328 poi il Tiny84 non riceveva più dati e dovevo resettarlo a prescindere.

leo72:
Ho dovuto collegare le linee di reset insieme perché se resettavo solo il 328 poi il Tiny84 non riceveva più dati e dovevo resettarlo a prescindere.

Usi le routine I2C standard di Arduino ?

Lato 328 sì, ma sul Tiny ho dovuto usare la TinyWire.

leo72:
Lato 328 sì, ma sul Tiny ho dovuto usare la TinyWire.

Allora il problema sono proprio queste librerie, sono fatte veramente male, in caso di errori sul bus invece di rilasciare il controllo piantano letteralmente il micro oppure smettono di gestire la I2C.
Spero che nel nuovo IDE 1.0 abbiano inserito delle nuove librerie TWI esenti da questi problemi, devo ancora verificarlo.

Risolto!
dopo aver letto i vostri commenti e cercato in rete, ho trovato su questo link
http://www.robotshop.com/forum/showthread.php?1148-Library-Problems-Hooking-up-the-DFRobot-I2C-LCD-to-Arduino-(Uno)

una libreria "LiquidCrystal_I2C" modificata.

Adesso se vien tolta e ripristinata l'alimentazione ad Arduino, l'LCD si comporta bene, facendo vedere quel che c'è nel setup (prima non accadeva) e continuando poi a visualizzare correttamente il resto.

nel setup
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello");
delay(1000);

nel loop
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperatura");
lcd.setCursor(0, 1);
lcd.print(cels,4);

Un saluto a tutti,
Tredipunta.