Problemino sketch

tuxduino:
Madonna santa! Quel delay(1000) proprio non si può vedere ]:smiley:

#include <LiquidCrystal.h>

byte a = 0;
byte b = 25;

int up = LOW;
int down = LOW;
int check = LOW;

int brightness = 0;

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

void setup() {
    pinMode(7, INPUT);     
    pinMode(8, INPUT);   
    pinMode(6, INPUT);
    lcd.begin(16, 2);
    lcd.print("Luci presepe by");
    lcd.setCursor(0, 1);
    lcd.print("Cesare Cacitti  ");
    delay(5000);
}

void loop() {
    // lettura di switch e pulsanti
    up = digitalRead(8);
    down = digitalRead(7);
    check = digitalRead(6);

if (check == HIGH) { 
        // modalità programmazione: mostro i valori attuali dei parametri
        lcd.setCursor(0, 0);
        lcd.clear();
        lcd.print("Giorno:");
        lcd.print(a);
        lcd.setCursor(0, 1);
        lcd.print("Notte:");
        lcd.print(b);

// tasto su: aumento il parametro
        if (up == HIGH) { 
            if (a<255) a++;
        }

// tasto giù: diminuisco il parametro
        if (down == HIGH) { 
            if (a>0) a--;
        }
       
        // nessun tasto premuto: non faccio nulla
    }
    else {
        // modalità esecuzione: emetto solo un messaggio
        lcd.clear();
        lcd.print("Esecuzione");
    }
   
    // ritardo di debounce(e vabbe')
    delay(50);
}




Si dovrebbe chiamare lcd.clear() e "ridisegnare" sull'LCD solo quando necessario, cioè al cambio di modalità oppure quando varia uno dei parametri da visualizzare, ma fa niente. Questo nella versione 3.0 magari :)

In queste ore ho cominciato a riprendere il progetto, ho inserito il fade, ma l'effetto PWM è molto "granuloso" e poi riesco a far fare solo dalla massima intensità alla minima, non viceversa, qualcuno mi darebbe un occhiata allo sketch?

#include <LiquidCrystal.h>

byte fadeAmount = 0;    // how many points to fade the LED by
byte b = 0;

int up = LOW;
int down = LOW;
int up1 = LOW;
int down1 = LOW;
int check = LOW;
int led = 9;           
int brightness = 0;  

   

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

void setup() {
  pinMode(7, INPUT);     
  pinMode(8, INPUT);   
  pinMode(6, INPUT);
  pinMode(14, INPUT);
  pinMode(15, INPUT);
  pinMode(led, OUTPUT);
  lcd.begin(16, 2);
  lcd.print("Luci presepe by");
  lcd.setCursor(0, 1);
  lcd.print("Cesare Cacitti  ");
  delay(5000);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.clear();
  lcd.print("Giorno:");
  lcd.print(fadeAmount);
  lcd.setCursor(0, 1);
  lcd.print("Notte:");
  lcd.print(b);

  delay(50);
  up = digitalRead(8);
  down = digitalRead(7);
  up1 = digitalRead(14);
  down1 = digitalRead(15);
  check = digitalRead(6);

  if (check == HIGH) {  

    if (up == HIGH) {  
      if (fadeAmount<255) fadeAmount++;
    }  

    if (down == HIGH) {  
      if (fadeAmount>0) fadeAmount--;
    }  
        if (down1 == HIGH) {  
      if (b>0) b--;
    }  
        if (up1 == HIGH) {  
      if (b<255) b++;
    }  

  }
  else {
    

  analogWrite(led, brightness);    


  brightness = brightness + fadeAmount;

 
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  
  delay(30);         
      
}
}