tuxduino:
Madonna santa! Quel delay(1000) proprio non si può vedere ]
#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);
}
}