ciao, ho seguito diverse guide e tutto ok... ora ho provato ad unirne due ed iniziano i problemi...
ecco il codice:
#include <LiquidCrystal.h>
#define BUTTON 7 // pin di input a cui è collegato il pulsante
#define LED 13 // LED collegato al pin digitale 13
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Variabili
int ContatorePulsantePremuto = 0; // conta il numero di volte che il pulsante è premuto buttonPushCounter
int StatoPulsante = 0; // stato corrente del pulsante
int StatoPulsantePrecedente = 0; // stato precedente del pulsante
void setup() {
pinMode(BUTTON, INPUT); // imposta il pin digitale come input
pinMode(LED, OUTPUT); // imposta il pin digitale come output
Serial.begin(9600); // apre la porta seriale e la inizzializza a 9600 bps
}
void loop() {
StatoPulsante = digitalRead(BUTTON); // legge il valore dell'input e lo conserva
lcd.begin(16, 2);
lcd.print("Programma 1");
if (StatoPulsante != StatoPulsantePrecedente) { // compara lo stato del pulsante attuale con il precedente
delay(500);
if (StatoPulsante == HIGH) { // se lo stato è cambiato incrementa il contatore
// se lo stato corrente è alto, il pulsante è passato da off a on
ContatorePulsantePremuto++;
switch (ContatorePulsantePremuto) {
case 1: // controlla se il pulsante è stato premuto una volta
Serial.println("on"); // stampa sulla console "on"
Serial.print("Ciclo avviato "); // stampa sulla console "numero di volte tasto premuto:"
Serial.println(ContatorePulsantePremuto, DEC); // stampa il numero di volte che il pulsante è stato premuto
Serial.println("off"); // stampa sulla console "off"
lcd.setCursor(0, 1);
lcd.print("ciclo avviato");
break;
case 2: // controlla se il pulsante è stato premuto due volte
Serial.println("on"); // stampa sulla console "on"
Serial.print("Avvio 1: "); // stampa sulla console "numero di volte tasto premuto:"
Serial.println(ContatorePulsantePremuto, DEC); // stampa il numero di volte che il pulsante è stato premuto
Serial.println("off"); // stampa sulla console "off"
break;
case 3: // controlla se il pulsante è stato premuto tre volte
Serial.println("on"); // stampa sulla console "on"
Serial.print("Avvio 2: "); // stampa sulla console "numero di volte tasto premuto:"
Serial.println(ContatorePulsantePremuto, DEC); // stampa il numero di volte che il pulsante è stato premuto
Serial.println("off"); // stampa sulla console "off"
break;
case 4: // controlla se il pulsante è stato premuto quattro volte
Serial.println("on"); // stampa sulla console "on"
Serial.print("Avvio 3: "); // stampa sulla console "numero di volte tasto premuto:"
Serial.println(ContatorePulsantePremuto, DEC); // stampa il numero di volte che il pulsante è stato premuto
Serial.println("off"); // stampa sulla console "off"
break;
}
}
}
// salva lo stato corrente nella variabile che indica lo stato precedente per il loop successivo
StatoPulsantePrecedente = StatoPulsante;
// controlla se il pulsante è stato premuto quattro volte se vero indica che è finito il ciclo
// il led lampeggia 2 volte per 50 millisecondi
// vengono inizializzate nuovamente le variabili
// si riavvia il ciclo
if (ContatorePulsantePremuto > 4) {
Serial.println("fine ciclo");
for (int x=0; x<10; x++) { // lampeggia per 10 volte
digitalWrite(LED, HIGH); // accende il LED
delay(50); // aspetta 50 millisecondi
digitalWrite(LED, LOW); // spegne il LED
delay(50); // aspetta 50 millisecondi
}
// inizializzazione delle variabili
ContatorePulsantePremuto = 0;
StatoPulsante = 0;
StatoPulsantePrecedente = 0;
Serial.println("mi riavvio"); // stampa sulla console "mi riavvio"
}
}
Il problema è che al "case 1" dovrei vedere vedere sulla seconda riga del display "ciclo avviato" come lo vedo via serialprint ma invece sul display vedo solo la prima riga "Programma 1" che sfarfalla continuamente e vedo in bora il testo della prima riga ripetersi sulla seconda.... nonostante le variazioni funzionino via seriale, il display è sempre uguale.
Il problema è nel codice?
grazie ancora!!