Salve sono nuovo nel forum e ho acquistato da poco Arduino Uno Rev 3 con il libro Arduino Progetti e soluzioni di Michael Margolis. Ho iniziato a scrivere qualche piccolo sketch utilizzando un led. Dopo aver fatto lampeggiare il led, accenderlo e spegnerlo con un pulsante e altri semplici esempi ho pensato di regolare la luminosità del led utilizzando due pulsanti, lo sketch è abbastanza semplice:
//controllo luminosità con due pulsanti
const int led = 9;
const int push_1 = 8;
const int push_2 = 7;
int state_1 = 0;
int state_2 = 0;
int brightness = 0;
void setup()
{
pinMode(led, OUTPUT);
pinMode(push_1, INPUT);
pinMode(push_2, INPUT);
}
void loop()
{
state_1 = digitalRead(push_1);
state_2 = digitalRead(push_2);
if (state_1 == HIGH)
{
brightness = brightness + 2;
delay(30);
}
if (brightness > 255)
{
brightness = 255;
}
if (state_2 == HIGH)
{
brightness = brightness - 2;
delay(30);
}
if (brightness < 1)
{
brightness = 0;
}
analogWrite(led, brightness);
}
Quindi ho utilizzato il pin 9 con la modulazione a larghezza d'impulso (PWM) per regolare la luminosità del led. Lo sketch funziona perfettamente, ma il mio dubbio riguarda le ultime linee di codice, perchè se scrivo:
if (brightness == 0)
{
brightness = 0;
}
Quando vado a diminuire la luminosità del led quando quest'ultimo arriva ad avere luminosità nulla automaticamente continuando a premere il pulsante si riporta un istante dopo alla luminosità massima?