Problemi interfaccia Arduino Mega e lcd Dfrobot keypad

Salve a tutti.
Ho acquistato un Arduino Mega 2560 e un lcd della Dfrobot con keypad per provare a realizzare qualcosa.
Il problema è che nel display si vedono solo dei rettangoli di puntini su tutte e due le rige.
Ho fatto molte ricerche e prove ma non ho risolto nulla, sempre che non ho cotto lcd. :roll_eyes:
Lo shield è montato direttamente sull'Arduino, ho cambiato i numeri dei pin nel programma di esempio "Hallo world" , nel serial monitor mi restituisce i valori dei pulsanti premuti ma sull'lcd non scrive proprio nulla.
Ho fatto qlc danno grave ?
Grazie mille.

Il problema è che nel display si vedono solo dei rettangoli di puntini su tutte e due le rige.

Su tutte le 2 righe é grave. Su una é normale; é l'immagine di reset del Display.
Comunque mi sa che hai sbaglaito o invertito qualche pin.
Quale Shield hai, quale Sketch usi e come hai collegato i pin.
Ciao Uwe

Ciao Uwe, grazie della risposta.
La shield l’ho presa qui - http://www.emmeshop.it/product.php?id_product=280
Come sketch ho usato l’esempio “hello world” dentro arduino.
Come primo collegamento ho montato il display direttamente sulla scheda ma non funzionando ho cominciato a cambiare i piedini cercando informazioni in rete, poi ho provato con dei fili volanti ( e qui mi sa che ho fatto il danno ) poi sono tornato alla prima scelta rimontando la scheda direttamente sull’arduino.
Questa è l’ultima versione dello sketch.

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 7, 6, 5, 4);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  Serial.begin(9600);
}
void loop() {
  // set the cursor to column 0, line 1
  lcd.setCursor(1, 1);
  lcd.print("Era ora");
  lcd.print(analogRead(0));
  //Serial.println(analogRead(0));
  delay(2000);
}

Probabilmente nei vari tentativi ho collegato un filo nel posto sbagliato, purtroppo di elettronica ne so praticamente meno di zero, ma sbagliando a volte si impara.

Grazie ancora per la risposta e buona domenica.
Ciao.

Aggiornamento.
Siccome che sono piuttosto testardo :smiley: ho fatto un’altra prova.
Ho montato il display sull’arduino, cambiato i piedini.
Ora c’è solo la prima riga con i rettangoli bianchi, però i pulsanti li legge ( mando il valore al monitor seriale ).
Questo è lo sketch.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.clear();
  Serial.begin(9600);
  }
void loop() {
  lcd.setCursor(1, 1);
  lcd.print("Era ora");
  Serial.println(analogRead(0));
  delay(2000);
  }

Leggendo in giro mi sembra però che manchi il piedino collegato al piedino Enable … cioè il 10 … ma provando si spegne tutto.
Ciao.

Secondo lo schema http://www.dfrobot.com/image/data/DFR0009/LCDKeypad%20Shield%20V1.0%20SCH.pdf e la descrizone della funzione LiquidCristal() LiquidCrystal - Arduino Reference
la definizione dei Pin del Display collegato tramite il Shield con Arduino non é

LiquidCrystal lcd(8, 9, 7, 6, 5, 4);

ma

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Ciao Uwe

Ciao Uwe.
Provato ma non cambia nulla, sempre la prima riga di rettangolini.
Pensi sia meglio con l' lcd montato direttamente sull'arduino o collegato con fili volanti ?
Ciao.

pinciorillo:
Ciao Uwe.
Provato ma non cambia nulla, sempre la prima riga di rettangolini.
Pensi sia meglio con l' lcd montato direttamente sull'arduino o collegato con fili volanti ?
Ciao.

Con i fili volanti introduci un altro problema, quello dei contatti salterini. Meglio evitare.

PS:
hai regolato il potenziometro che controlla il contrasto?
http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)
seconda figura

Si ho provato, sia al minimo che al massimo che medio :drooling_face:
Leggendo il file di esempio leggo che il pin dell' lcd R/W andrebbe a massa ..... potrebbe essere questo il problema ?
Ciao e grazie ancora per l' interessamento.

pinciorillo:
Si ho provato, sia al minimo che al massimo che medio :drooling_face:
Leggendo il file di esempio leggo che il pin dell' lcd R/W andrebbe a massa ..... potrebbe essere questo il problema ?
Ciao e grazie ancora per l' interessamento.

Il pin R/W serve per poter scrivere sulla RAM del display o solo per leggerla. Ovviamente per visualizzare dei dati la linea deve essere attiva per la scrittura, appunto un segnale LOW su quel pin.

Ciao Leo, scusa ma non avevo notato che eri tu a rispondere, sono poco pratico di forum.
Il pin R/W va messo LOW ma in Input o Output ?

pinciorillo:
Ciao Leo, scusa ma non avevo notato che eri tu a rispondere, sono poco pratico di forum.
Il pin R/W va messo LOW ma in Input o Output ?

Se parliamo dello shield, il pin è collegato ad un pin di Arduino, quindi va messo OUTPUT e poi LOW.
Se invece parliamo di display "sfuso", lo colleghi a massa.

Lo shield è montato direttamente sull' arduino.
Il mio problema è che non ho trovato nulla in rete che mi dicesse che pin devo usare per R/W.
Ho provato con il 10 ma si spegne tutto.

Se è la versione 1.0, il datasheet dice però che il pin R/W è già connesso a massa.

Sì sullo shield c'è scritto V1.0
Provato ancora ma continuo a vedere solo la prima riga di rettangoli.
Potrei avere fatto dei danni allo shield o c'è ancora qlc speranza che vada ? :roll_eyes:

Non hai un'altra scheda Arduino o un amico con una UNO per provare lo shield su qualcosa di diverso dalla tua Mega?

Purtroppo ho solo questa scheda perchè è la prima volta che mi cimento in questo campo e non conosco nessuno che smanetta in queste cose.

Se gli sketch di esempio che danno loro non ti funzionano, ti suggerisco di contattare il venditore e di esporre il tuo problema.

Finora ho provato lo sketch che si trova in Arduino.
Provo a prendere lo sketch dal sito dove ho preso lo shield e vedo cosa succede.
Speriamo bene.

pinciorillo:
Finora ho provato lo sketch che si trova in Arduino.
Provo a prendere lo sketch dal sito dove ho preso lo shield e vedo cosa succede.
Speriamo bene.

Prova, magari come ha suggerito Uwe qualche post prima, si tratta solo di una errata configurazione dei pin.