Salve, sto provando a fare un menù con Arduino e un monitor lcd (16,2 ). Il programma è giusto (come sintassi), ma non fa ciò che deve fare, ovvero vengono stampate le lettere che ho inserito ma quando premo il bottone non cambia nulla. Vorrei da voi un aiuto, grazie
Ho corretto e accorciato il tutto, però ora le scritte "girano" e se premo il bottone, viene visualizzata la scritta che sta passando in quel momento, appena lo mollo ricomincia il tutto
qui non otterrai mai con certezza quello che ti aspetti e il mio consiglio è quello di posizionare anche il controllo di button(che immaggino sia una variabile booleana) anche nel controllo dell'if(button_value==HIGH){ e di ritardare con un bel millis() anche un 200ms dal momento che rilasci il pulsante(debounce software del pulsante), fatto questo utilizzando lo switch case aumenti di un'uno la variabile cont_pag solo quando lo stato del pulsante è su HIGH
quindi:
button_value = digitalRead(button_pin);
if ((button_value == LOW) && (button == false) && ((millis() - t1) >= 200)) {
cont_pag++;
button = true;
t1 = millis();
if (cont_pag > 3) { // verifico se ho raggiunto l'ultima pagina del menu e in caso ricomincio da capo
cont_pag = 0;
}
Serial.println(cont_pag);
}
if ((button_value == HIGH) && (button == true) && ((millis() - t1) >= 200)) {
button = false;
t1 = millis();
Serial.println("ritardo debounce");
}
}
I "programmi", per definizione, fanno quello che gli chiedi di fare, che non sempre coincide con quello che vorresti fare. Quindi, si, il programma è nel giusto, nel senso che non è lui il colpevole del malfunzionamento.