Pages: [1]   Go Down
Author Topic: lcd che sfarfalla  (Read 9 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao, ho seguito diverse guide e tutto ok... ora ho provato ad unirne due ed iniziano i problemi...

ecco il codice:
Code:
#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!!
Logged

Pages: [1]   Go Up
Jump to: