Projet 13 Mini Lampe

1. Description

Dans ce projet, nous allons contrôler une lampe via Arduino UNO et un bouton. Lorsque nous appuyons sur le bouton, l’état de la lampe change (ALLUMÉ ou ÉTEINT).

2. Principe de fonctionnement

Lorsque le bouton est relâché, une tension VCC passant par R29 fournit un niveau haut pour la borne S. Lorsqu’il est pressé, les broches 1 et 3, 2 et 4 sont connectées et la tension sur S1 arrive à la masse (GND) en niveau bas. À ce moment, R29 évite un court-circuit entre VCC et GND.

3. Schéma de câblage

4. Code de test

/*
  keyestudio ESP32 Inventor Learning Kit 
  Project 13.1 Mini Lamp
  http://www.keyestudio.com
*/
int button = 15;
int value = 0;

void setup() 
{
  Serial.begin(9600); //Définir le débit en bauds du port série à 9600 
  pinMode(button, INPUT);  //Connecter la broche du bouton au port digital 8 et la configurer en mode entrée.
}

void loop() 
{
  value = digitalRead(button);//Lire la valeur du bouton 
  Serial.print("Key status:"); //Afficher "Key status:" sur le port série 
  Serial.println(value); //Afficher la variable du bouton sur le port série avec saut de ligne
}

5. Résultat du test

Après avoir connecté le câblage et téléversé le code, ouvrez le moniteur série et réglez le débit à 9600.
Lorsque nous appuyons sur le bouton, le port série affiche “Key status: 0” ; lorsque nous le relâchons, il affiche “Key status: 1”.

6. Extension des connaissances

Ensuite, nous allons contrôler la LED via l’état des boutons.

  • Organigramme :

  • Schéma de câblage :

  • Code

/*
  keyestudio ESP32 Inventor Learning Kit 
  Project 13.2 Mini Lamp
  http://www.keyestudio.com
*/
#define led	   4
#define button 15
bool ledState = false;

void setup() 
{
  // initialiser la broche digitale PIN_LED en sortie.
  pinMode(led, OUTPUT);
  pinMode(button, INPUT);
}

// la fonction loop s’exécute en boucle indéfiniment
void loop() 
{
  if (digitalRead(button) == LOW) {    //Lorsque la valeur du bouton est 0 pour la première fois, un rebond est déclenché, donc un délai de 20ms est appliqué pour vérifier si le bouton est toujours à 0. 
    delay(20);                              //Délai de 20ms
    if (digitalRead(button) == LOW) {   //vérifier si la valeur du bouton est 0
      ledState = !ledState;                 //ledState devient l’inverse de sa valeur initiale, ce qui permet d’allumer ou d’éteindre la LED 
      digitalWrite(led, ledState);
    }
    while (digitalRead(button) == LOW);     //maintenir la boucle tant que le bouton est appuyé, en sortir lorsqu’il est relâché
  }
}
  • Résultat du test

Vous pouvez contrôler l’allumage et l’extinction de la LED rouge avec le bouton rouge.