LCD16x2 Caratteri strani

Salve,
sono alle prime armi con arduino e sto cercando di utilizzarlo per pilotare un plastico di un trenino elettrico. Ho montato un display LCD dove vorrei mostrare i comandi che eseguo. Mentre il display sembra funzionare correttamente all'improvviso comincia a scrivere caratteri strani. Per semplificare i test ho montato il display sulla breadboard ed ho fatto stampare a video una scritta fissa "Ciao " + un contatore. dopo poco anche in questo caso lo schermo impazzisce e spara caratteri strani a video. Secondo voi cosa può essere?
Grazie per il supporto

Buongiorno e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di farla al più presto. :wink:

Ciao. Posta uno schema con tutto quello che c'è collegato ad arduino. Potrebbe essere un problema di disturbi da parte di un motore o altro.

Ciao,
non ho collegato motori ed ho provato a collegare solo il display sulla breadboard ricevendo lo stesso comportamento. All'inizio sembra che funzioni poi comincia a dare i numeri... Dopo posto schema e magari se riesco anche un video.

Grazie

Piuttosto del video posta il programma...

#include <LiquidCrystal.h>

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

void ScriviMsg(String Rigo1, String Rigo2){
lcd.clear();
delay(100);
lcd.setCursor(0,0);
lcd.print(Rigo1);
lcd.setCursor(0,1);
lcd.print(Rigo2);
delay(100);
}

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.begin(16,2); //16 colonne 2 righe
pinMode(10, INPUT);
pinMode(8, INPUT);

}

void loop() {
// put your main code here, to run repeatedly:
int sec = millis() / 1000;
int ret =digitalRead(10);
if (ret==HIGH){
ScriviMsg("Stazione", "ENTRATA");
} else{
ret =digitalRead(8);
if (ret==HIGH){
ScriviMsg("Stazione", "USCITA");
} else{
ScriviMsg("Stazione Accesa", String(sec));
}
}
delay(200);

}

Indenta quel programma
Mettilovtra i tag code
E elimina gli oggetti String