5.4.4 Projet 2.2. Lampe de table

1. Description

Pour une lampe de table simple et courante, appuyez sur le bouton pour l’allumer, appuyez de nouveau pour l’éteindre.

2. Code de test

Calculez le nombre d’appuis sur le bouton et prenez le reste de la division par 2, vous obtiendrez 0 ou 1, deux états possibles.

#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. Résultat du test

Ouvrez le moniteur série pour afficher le nombre d’appuis sur le bouton, puis appuyez une fois sur le bouton : la LED s’allumera ; appuyez de nouveau, elle s’éteindra.

image40