### 5.1 Système d'éclairage #### 5.1.1 Allumer une LED Ouvrez le code **5.1.1Blink** avec Arduino IDE. ```c #define LED_BUILTIN 27 //LED pins void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } ``` Choisissez la carte **ESP32 Dev Module** et le port **COM**, puis téléchargez le code. ![51454125](../media/51454125.png) **Résultat du test :** La LED clignote toutes les secondes, car io27 sur la carte ESP32 alterne les niveaux haut et bas toutes les secondes. | Niveau de puissance | Résultat | | --- | --- | | HIGH | LED ON | | LOW | LED OFF | ![image-20250417101137576](../media/image-20250417101137576.png) #### 5.1.2 Contrôler la LED avec PWM Ouvrez le code **5.1.2PWM** avec Arduino IDE. ```c #define led 27 //Define LED pin void setup(){ pinMode(led, OUTPUT); //Set pin to output mode } void loop(){ for(int i=0; i<255; i++) //for loop statement. Constantly increase variable i till 255, exit the loop { analogWrite(led, i); //PWM output, used to control the brightness of LED delay(3); } for(int i=255; i>0; i--) //for loop statement. Constantly decrease variable i till 0, exit the loop { analogWrite(led, i); delay(3); } } ``` Choisissez la carte **ESP32 Dev Module** et le port **COM**, puis téléchargez le code. ![5458448](../media/5458448.png) **Résultat du test :** À une fréquence de signal appropriée, le PWM modifie la tension de sortie effective en modifiant le rapport cyclique sur une période. En termes simples, dans un temps spécifié, plus le port IO émet un niveau haut, plus la valeur PWM est grande, et plus la LED sera lumineuse. **Le module LED s'allumera lentement du sombre au lumineux, puis du sombre au lumineux.** ![cou1k3](../media/cou1k3.png) #### 5.1.3 Lire la valeur numérique du bouton Ouvrez le code **5.1.3Button** avec Arduino IDE. ```c #define ButtonPin 5 //Define the button pin to 5 void setup() { //initialize serial port and set baud rate to 9600 Serial.begin(9600); //Set pin to input mode pinMode(ButtonPin,INPUT); } void loop() { //Define a value as the read button value int ReadValue = digitalRead(ButtonPin); //Serial port prints the defined value Serial.print("The current status of the button is : "); Serial.println(ReadValue); delay(500); } ``` Choisissez la carte **ESP32 Dev Module** et le port **COM**, puis téléchargez le code. ![5458448](../media/5458448.png) **Résultat du test :** Ouvrez le moniteur série et réglez le débit en bauds sur 9600. Lorsque le bouton est relâché, la valeur est 1 ; si vous appuyez sur le bouton, elle devient 0. Le principe du module bouton est un circuit contrôlé par ce bouton. Lorsque le bouton est enfoncé, le circuit est fermé de sorte que le courant passe à travers le bouton vers la masse (GND), ce qui fait que la broche d'entrée numérique détecte un niveau bas. Lorsque le bouton est relâché, le circuit est coupé et le niveau de la broche augmente en raison d'une résistance de rappel, ce qui fait que la broche numérique détecte un niveau haut. ![image-20250417111724001](../media/image-20250417111724001.png) #### 5.1.4 Bouton à verrouillage automatique Ouvrez le code **5.1.4 Self-Locking_Button** avec Arduino IDE. ```c #define ButtonPin 5 //Define the button pin int value = 0; //Define a value to determine the status of button void setup() { //Initialize the serial port and set baud rate to 9600 Serial.begin(9600); //Set the pin to inpu tmode pinMode(ButtonPin,INPUT); } void loop() { //Define a value as the read button value int ReadValue = digitalRead(ButtonPin); //Detect whether the button is pressed if (ReadValue == 0) { //Eliminate the button shake delay(10); if (ReadValue == 0) { value = !value; Serial.print("The current status of the button is : "); Serial.println(value); } //Detect again whether the button is still pressed //Pressed: execute the loop; Released: exit the loop to next step while (digitalRead(ButtonPin) == 0); } } ``` Choisissez la carte **ESP32 Dev Module** et le port **COM**, puis téléchargez le code. ![5458448](../media/5458448.png) **Résultat du test :** Ouvrez le moniteur série et réglez le débit en bauds sur 9600. Lorsque vous appuyez une fois sur le bouton, 1 s'affiche. Si vous appuyez une deuxième fois sur le bouton, la valeur devient 0. Désormais, un bouton commun possède la fonction d'un bouton à verrouillage automatique. ![image-20250417111849947](../media/image-20250417111849947.png) #### 5.1.5 Utiliser le bouton pour contrôler le module LED Ouvrez le code **5.1.5 Lighting-System** avec Arduino IDE. ```c #define ButtonPin 5 //Define a button pin #define LED 27 //Define LED pin int value = 0; //Define a value to detect button status void setup() { //initialize serial port and set baud rate to 9600 Serial.begin(9600); //Set pin to input mode pinMode(ButtonPin,INPUT); //Set pin to output mode pinMode(LED,OUTPUT); } void loop() { //Define a value as the read button value int ReadValue = digitalRead(ButtonPin); //Detect whether the button is pressed if (ReadValue == 0) { //Eliminate the button shake delay(10); if (ReadValue == 0) { value = !value; //Detect the button status, press once to light up LED, press again to turn off LED, in a loop if(value) { digitalWrite(LED,HIGH); }else{ digitalWrite(LED,LOW); } } //Detect the button status again //Pressed: execute the loop; Released: exit the loop to next step while (digitalRead(ButtonPin) == 0); } } ``` Choisissez la carte **ESP32 Dev Module** et le port **COM**, puis téléchargez le code. ![5458448](../media/5458448.png) **Résultat du test :** Al pulsar el botón una vez, el LED se enciende; al pulsarlo de nuevo, se apaga. Este proceso crea un ciclo, lo cual coincide con el principio de iluminación real.