Pages: 1 [2] 3   Go Down
Author Topic: (spero) piccolo problema con LCD  (Read 2607 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21616
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vediamo se ho capito il problema.

Il display è I2C (non seriale) per cui viene inizializzato lato Arduino, che sul bus I2C funge da master aprendo la comunicazione verso il micro che funge da slave I2C sul retro del display.
Se è così, scollegando l'alimentazione al display e poi rendendogliela, l'Arduino non riesce più a comunicare con esso: perché hai sganciato il display dal bus I2C. Il reset riavvia lo sketch, quindi riavvia anche la parte che riapre la connessione verso il display.

Ipotizzo questo senza vedere lo sketch.

Sul fatto che il display tenga i caratteri in memoria, mi suona strano ma forse è il suo modo di operare?
Logged


italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

esatto il mio display è I2C.

penso che sia un problema di tempi di inizializzazione, quando faccio upload e avvio lo sketch la prima volta perchè se dopo resetto arduino scrive correttamente.

devo ancora provare a ritardare l'inizializzazione questa sera devo trovare il tempo di fare la modifica.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

eventualmente tornerò  smiley-twist  smiley-grin

eccomi tornato... il problema si è ridotto saldando il tutto ma al primo avvio mi da sempre lo stesso problema...

1. Avvio Arduino
2. Inizializzo il display
3. Sullo schermo non compare niente
4. Reset Arduino
5. Tutto funziona alla perfezione(quasi)


Il discorso è che io non voglio dover resettare la board... cosa può essere?
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11980
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai ragione a non volerlo fare, forse dovresti provare ad inserire un ritardo all'inizializzazione del display LCD, oppure inserire un ritardo tra l'inizializzazione e l'invio dei dati, secondo me si blocca proprio perché legge qualcosa mentre si sta ancora impostando.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

proverò con un ritardo
Logged

italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11980
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11980
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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-grin
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-roll

Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11980
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-roll


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

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

permettimi un paio di domande....

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

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ah un'altra domanda mi potresti passare la libreria?
Logged

italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 (322.81 KB - downloaded 9 times.)
Logged

Pages: 1 [2] 3   Go Up
Jump to: