Pages: [1]   Go Down
Author Topic: Arduino Mega + LCD03  (Read 1030 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,
sto iniziando i primi passi con Arduino.
Nell'interfacciare un Arduino Mega 2560 R3 con un Display LCD03 16x2 ( http://www.robot-electronics.co.uk/htm/Lcd03tech.htm )  tramite protocollo I2C, non riesco a visualizzare nulla.
Prima di procedere con l'eventuale reso al fornitore, vi chiedo di verificare se
sbaglio qualche cosa.
Il collegamento fisico è visibile nell'immagine allegata: linea SDA ( pin 20 ) colore blu, linea SCL ( pin 21 ) colore verde, due resistenze di Pull-Up da 1K8 sulle linee SDA e SCL, alimentazione per il display pin 5V colore rosso e pin GDN colore nero. Nel display ho tolto il jumper per farlo funzionare in I2C.
Alimentando Arduino anche il display viene alimentato regolarmente però se provo a inviare dei dati non visualizzo nulla.
Questo è lo sketch:
Code:
#include <Wire.h>

#define LED_13              13

#define LCD_ADDRESS         0xC6
#define LCD03_CLEAR         0x0C
#define LCD03_HIDE_CUR      0x04
#define LCD03_CLEAR         0x0C
#define LCD03_SET_CUR_HOME  0x01

#define SDA_PIN             20
#define SCL_PIN             21

void setup(){
  Wire.begin();                           // inizializza I2C Master ( Arduino )
  Wire.begin(LCD_ADDRESS);                // inizializza I2C Slave ( lcd )
 
  Wire.beginTransmission(LCD_ADDRESS);    // inizia trasmissione su lcd
  Wire.write(LCD03_CLEAR);                // pulisci display
  Wire.write(LCD03_SET_CUR_HOME);         // posiziona il cursore nella prima riga prima colonna
  Wire.endTransmission(LCD_ADDRESS);      // termina trasmissione
 
  pinMode( LED_13, OUTPUT );

 
}

void loop(){
  Wire.beginTransmission(LCD_ADDRESS);
  Wire.write(LCD03_SET_CUR_HOME);             
  Wire.write("A");
  Wire.endTransmission(LCD_ADDRESS);
  digitalWrite( LED_13, HIGH );
  delay(1000);

  Wire.beginTransmission(LCD_ADDRESS);
  Wire.write(LCD03_SET_CUR_HOME);             
  Wire.write("B");
  Wire.endTransmission(LCD_ADDRESS);
  digitalWrite( LED_13, LOW );
  delay(1000);
}

Sbaglio qualche cosa nel codice ?

Forse l'indirizzo del display non è quello indicato nel relativo manuale, dovrei provare a fare un ciclo e testare tutte le combinazioni di indirizzi possibili ?

Grazie.



* amega-lcd03.jpg (585.84 KB, 1257x1650 - viewed 56 times.)
Logged

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

non stai regolando il contrasto; localizza il relativo pin e collegagli un trimmer da 10kohm: uno dei due capi appunto al pin del contrasto e l'altro capo a GND, ruota lentamente partendo dalla posizione centrale, ad un certo punto vedrai i caratteri; ovviamente fai in modo da mandare una frase stabile, in modo che ci sia anche quando troverai il giusto valore.
Riguardi le R sulle due linee I2C non sono sicuro ma mi pare di aver sentito sempre usare valori più grandi, comuqnue è solo una sensazione.
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: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per la risposta,
devo però dire che il display che sto usando è questo: http://www.robot-electronics.co.uk/htm/Lcd03tech.htm nella versione 2 righe 16 colonne.

Il display ha 4 pin per alimentazione e dati ( Vcc, Gdn, SDA, SCL ) e altri 7 pin per collegare una eventuale  tastiera. Non ha pin per regolare il contrasto ma ha un trimmer ( che nella foto del manuale non è visibile ) per regolare appunto il contrasto. Ovviamente ho provveduto ad aumentare il contrasto.

Se il codice è giusto è probabile che il display abbia un altro indirizzo o che non funziona ?!?!
Logged

Selvazzano Dentro - Padova
Offline Offline
Edison Member
*
Karma: 45
Posts: 1417
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho usato il modello con 4 righe in collegamento seriale e funziona benissimo.

Ti sei ricordato di rimuovere il ponticello per la scelta della modalità I2C?

E' anche possibile che l'indirizzo sia stato modificato: ti conviene provare tutti gli altri indizzi (C6, C8, CA, CC e CE) prima di rimandare il modulo dal fornitore e, magari, provare anche la modalità seriale.

Dimenticavo: alimentando semplicemente il modulo, dovrebbe apparire la modalità e l'eventuale indirizzo I2C.
Logged

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

Ho usato il modello con 4 righe in collegamento seriale e funziona benissimo.

Ti sei ricordato di rimuovere il ponticello per la scelta della modalità I2C?

E' anche possibile che l'indirizzo sia stato modificato: ti conviene provare tutti gli altri indizzi (C6, C8, CA, CC e CE) prima di rimandare il modulo dal fornitore e, magari, provare anche la modalità seriale.

Dimenticavo: alimentando semplicemente il modulo, dovrebbe apparire la modalità e l'eventuale indirizzo I2C.

Ho fatto prove sia senza jumper ( modalità I2C ) sia con jumper ( modalità seriale ) senza risultati.

Poi alimentando il display, non appare la modalità e l'indirizzo.

P.S.:
come posso testare se la modalità I2C del mio Arduino Mega funziona, senza collegare nessun modulo I2C ?



Logged

Offline Offline
God Member
*****
Karma: 2
Posts: 551
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao... bhè non penso sia un problema di arduino.. se cyber ha avuto esperienza con uno simile al tuo e dice che appena lo alimenti dovrebbe apparire insirzzo i2c e altro.. mi sembra abbastanza ovvio che c'è qualche cosa che non va nel dysplay.
Cyber@ usavi qualche libreria particolare o andavi diretto con Wire come sta facendo lui ?
Logged

Selvazzano Dentro - Padova
Offline Offline
Edison Member
*
Karma: 45
Posts: 1417
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non credo che sia un problema della I2C, visto che non funziona anche in seriale.

Ho paura che sia proprio il modulo guasto...  smiley-cry magari hai fornito per un istante l'alimentazione al contrario.

Verifica anche che non sia un problema di contatti della breadboard.

Per superzaffo:

no, ho usato la modalità seriale con comandi diretti senza utilizzo di librerie.

Il grande vantaggio di questo modulo è che può gestire anche un tastierino 3x4, senza spreco di pin e di risorse software.
Logged

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

E' impossibile averlo alimentato al contrario in quanto prima di collegare il display ho misurato con il tester il corretto voltaggio e la corretta polarità.

Anche se sono alla prima esperienza con ARDUINO, sono di formazione "elettronica" e "informatico" di professione, più o meno so come muovermi  smiley-wink , poi tutto è possibile, anche un momento di non "lucidità"  smiley

Il fatto che alimentando il modulo non venga visualizzato nessun messaggio credo che non voglia dire nulla in quanto mi sembra di aver letto che tale messaggio può essere disabilitato.

La cosa strana è che comunque il display si "accende", come si vede dall'immagine allegata, la prima foto è il display spento, la seconda il display alimentato e con un basso contrasto, la terza foto il display con un più alto contrasto.

Ho inviato una mail al produttore, vediamo cosa risponde ...


* display.jpg (337.08 KB, 591x810 - viewed 30 times.)
Logged

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

Ciao,

io ho lo stesso LCD e dopo aver tribolato per due/tre giorni ho risolto utilizzando questa libreria: http://code.google.com/p/library-lcd-i2cr-arduino/downloads/list

Funziona benissimo in modalità I2C (senza ponticello).

Se ti serve un programma di esempio fammi sapere che lo pubblico.

Ciao

Andrea
Logged

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

Grazie Andrea, ma nei vari tentativi ho anche provato con questa libreria.

Purtroppo il problema sembra essere proprio il display.

Infatti il produttore del display mi ha scritto che alimentando il display si dovrebbe vedere brevemente il flash della retroilluminazione e subito dopo un messaggio, che dipende dal tipo di modalità selezionata, tipo: “Serialmode”   oppure  “I2Cmode @C6”

Nel mio caso il flash appare ma il messaggio no.

Il tuo display mostra il messaggio della modalità subito dopo averlo alimentato ?
Logged

Pages: [1]   Go Up
Jump to: