5.4.4 Progetto 2.2. Lampada da tavolo
1. Descrizione
Per una semplice lampada da tavolo comune, premendo il pulsante si accende; premendolo di nuovo si spegne.
2. Codice di test
Conta il numero di volte che il pulsante è stato premuto e calcola il resto della divisione per 2; otterrai 0 o 1, due valori di stato.
#define btn1 16
#define led_y 12
int btn_count = 0; // Counter for button presses
void setup()
{
Serial.begin(9600);
pinMode(btn1, INPUT);
pinMode(led_y, OUTPUT);
}
void loop()
{
boolean btn1_val = digitalRead(btn1);
if(btn1_val == 0) // If button is pressed
{
delay(10); // 10ms delay for debouncing
if(btn1_val == 0) // Confirm button is still pressed
{
boolean btn_state = 1;
while(btn_state == 1) // Loop until button is released
{
boolean btn_val = digitalRead(btn1);
if(btn_val == 1) // If button is released
{
btn_count++; // Increment press counter
Serial.println(btn_count);
btn_state = 0; // Exit loop
}
}
}
boolean value = btn_count % 2; // Modulo operation (0 or 1)
if(value == 1)
{
digitalWrite(led_y, HIGH); // Turn LED on
}
else
{
digitalWrite(led_y, LOW); // Turn LED off
}
}
}
3. Risultato del test
Apri il monitor seriale per visualizzare il numero di pressioni del pulsante; premendo il pulsante una volta il LED si accende, premendolo di nuovo si spegne.
