5.4.4 Project 2.2. Tafellamp
1. Beschrijving
Voor een eenvoudige tafellamp: druk op de knop om hem aan te doen, druk nogmaals om hem uit te doen.
2. Testcode
Bereken hoe vaak de knop is ingedrukt en neem de rest bij deling door 2; je krijgt zo de twee toestanden 0 of 1.
#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. Testresultaat
Open de seriële monitor om het aantal knopdrukken af te drukken; druk eenmaal op de knop, de LED gaat aan; druk nogmaals, hij gaat uit.
