L’objectif de ce tutoriel est d’apprendre à contrôler une LED RGB à l’aide de plusieurs boutons poussoirs connectés à la carte ESP8266 NodeMCU.
Chaque bouton permettra d’allumer une couleur différente (rouge, verte ou bleue) de la LED RGB.
Ce projet permet de comprendre le principe de commande manuelle d’une LED multicolore, la gestion des entrées numériques avec des boutons poussoirs, ainsi que le contrôle des sorties PWM (Pulse Width Modulation) de la carte ESP8266 NodeMCU pour produire différentes couleurs lumineuses.
L’utilisateur apprendra à :
- comprendre le fonctionnement d’une LED RGB (anode ou cathode commune) et le rôle de chaque broche correspondant aux couleurs rouge, verte et bleue.
- réaliser le câblage entre la LED RGB, les boutons poussoirs et la carte ESP8266 NodeMCU à l’aide d’une breadboard et de fils de connexion.
- programmer la carte en MicroPython afin d’allumer la couleur souhaitée de la LED RGB selon le bouton poussoir appuyé.
- découvrir comment utiliser les entrées numériques pour lire l’état des boutons et les sorties PWM pour générer différentes intensités lumineuses.
- expérimenter la combinaison des couleurs primaires pour créer d’autres teintes en appuyant sur plusieurs boutons simultanément.
1. Carte ESP8266 NodeMCU
La carte ESP8266 NodeMCU est un microcontrôleur qui est utilisée pour lire l’état des boutons poussoirs et commander les sorties connectées à la LED RGB afin d’afficher différentes couleurs.
2. Module LED RGB
Le module LED RGB regroupe trois diodes électroluminescentes dans un même boîtier : une rouge (R), une verte (G) et une bleue (B).
En combinant ces trois couleurs de base, on peut produire une large gamme de couleurs.
3. Boutons poussoirs
Les boutons poussoirs servent à envoyer un signal à la carte ESP8266 lorsqu’ils sont pressés.
Chaque bouton correspond à une couleur : rouge, vert ou bleu.
Lorsque l’utilisateur appuie sur un bouton, le programme active la couleur correspondante sur la LED RGB.
4. Breadboard (plaque d’essai)
La breadboard est une plaque de prototypage sans soudure qui permet de connecter facilement les composants entre eux.
Elle simplifie le câblage et les tests du circuit avant une éventuelle réalisation définitive.
5. Fils de connexion (jumpers)
Les fils de connexion servent à relier les différents composants (LED RGB, boutons poussoirs, résistances) à la carte ESP8266 NodeMCU sur la breadboard.
1- Connectez la carte ESP8266 à votre ordinateur à l'aide du câble USB.
2- Prenez le module LED RGB. Il a quatre broches : une pour la masse et trois pour les couleurs rouge, verte et bleue. Les broches peuvent être étiquetées comme R, G, B, et GND . Utilisez les fils de raccordement pour connecter le module LED RGB à la carte ESP8266:
- Connectez la broche R (rouge) du module LED RGB à la broche D0 (GPIO16) de la carte ESP8266.
- Connectez la broche G (verte) du module LED RGB à la broche D1 (GPIO5) de la carte ESP8266.
- Connectez la broche B (bleue) du module LED RGB à la broche D2 (GPIO4) de la carte ESP8266.
- Connectez la broche GND du module LED RGB à la broche GND de la carte ESP8266.
3- pour les boutons poussoirs
Bouton-poussoir 1 pour la couleur rouge:
- Connectez une patte du bouton-poussoir à la broche D3 (GPIO0) de la carte ESP8266.
- Connectez une autre patte du bouton-poussoir à la broche GND de la carte ESP8266.
Bouton-poussoir 2 pour la couleur verte :
- Connectez une patte du bouton-poussoir à la broche D4 (GPIO2) de la carte ESP8266.
- Connectez une autre patte du bouton-poussoir à la broche GND de la carte ESP8266.
Bouton-poussoir 3 pour la couleur bleue :
- Connectez une patte du bouton-poussoir à la broche D5 (GPIO14) de la carte ESP8266.
- Connectez une autre patte du bouton-poussoir à la broche GND de la carte ESP8266.
Voici un exemple de code Micropython pour contrôler un module LED RGB avec trois boutons-poussoirs.
Assurez-vous d'adapter les broches GPIO selon votre configuration matérielle.
1- Importez les modules nécessaires :
1 2 3 |
import machine from machine import Pin import time |
2- Configurez les broches (GPIO) pour les trois boutons poussoirs et les trois broches du module LED RGB :
1 2 3 4 5 6 7 8 |
red_led=Pin(16, Pin.OUT) red_button = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP) green_led=Pin(5, Pin.OUT) green_button = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP) blue_led=Pin(4, Pin.OUT) blue_button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP) |
3- Créer trois variables pour conserver les états de trois couleurs du module LED RGB
1 2 3 |
red_state=0; green_state=0; blue_state=0; |
Créez une boucle pour surveiller l'état des boutons poussoirs et allumer/éteindre les trois LEDs en conséquence :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
while True: red_first = red_button.value() time.sleep(0.01) red_second = red_button.value() if red_first and not red_second: print('Button pressed!') if (red_state==0): red_led.value(1) red_state=1 else: red_led.value(0) red_state=0; time.sleep(0.5) elif not red_first and red_second: print('Button released!') #led_rouge.value(0) green_first = green_button.value() time.sleep(0.01) green_second = green_button.value() if green_first and not green_second: print('Button pressed!') if (green_state==0): green_led.value(1) green_state=1 else: green_led.value(0) green_state=0; time.sleep(0.5) elif not green_first and green_second: print('Button released!') blue_first = blue_button.value() time.sleep(0.01) blue_second = blue_button.value() if blue_first and not blue_second: print('Button pressed!') if (blue_state==0): blue_led.value(1) blue_state=1 else: blue_led.value(0) blue_state=0; time.sleep(0.5) elif not blue_first and blue_second: print('Button released!') |
Ce code crée une boucle infinie qui vérifie en permanence les trois états des boutons poussoirs.
Voici le programme complet en Micropython:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import machine from machine import Pin import time red_led=Pin(16, Pin.OUT) red_button = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP) red_state=0; green_led=Pin(5, Pin.OUT) green_button = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP) green_state=0; blue_led=Pin(4, Pin.OUT) blue_button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP) blue_state=0; while True: red_first = red_button.value() time.sleep(0.01) red_second = red_button.value() if red_first and not red_second: print('Button pressed!') if (red_state==0): red_led.value(1) red_state=1 else: red_led.value(0) red_state=0; time.sleep(0.5) elif not red_first and red_second: print('Button released!') #led_rouge.value(0) green_first = green_button.value() time.sleep(0.01) green_second = green_button.value() if green_first and not green_second: print('Button pressed!') if (green_state==0): green_led.value(1) green_state=1 else: green_led.value(0) green_state=0; time.sleep(0.5) elif not green_first and green_second: print('Button released!') blue_first = blue_button.value() time.sleep(0.01) blue_second = blue_button.value() if blue_first and not blue_second: print('Button pressed!') if (blue_state==0): blue_led.value(1) blue_state=1 else: blue_led.value(0) blue_state=0; time.sleep(0.5) elif not blue_first and blue_second: print('Button released!') |
Lorsque le bouton est enfoncé (l'état est bas), le module LED RGB s'allume.
Si le bouton est enfoncé une autre fois, le module LED RGB s'éteint.
Le délai de 0.5 seconde est utilisé pour éviter le rebond du bouton-poussoir, qui peut provoquer plusieurs activations du bouton en appuyant une seule fois.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info