Note

Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez au cœur des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux avant-premières.

  • Réductions spéciales : Profitez de réductions exclusives sur nos derniers produits.

  • Promotions festives et cadeaux : Participez à des tirages au sort et à des promotions festives.

👉 Prêt à explorer et à créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

2.3 Lumière Colorée

Dans ce projet, nous allons explorer le monde fascinant du mélange de couleurs additives en utilisant une LED RGB.

La LED RGB combine trois couleurs primaires, à savoir le rouge, le vert et le bleu, dans un seul boîtier. Ces trois LEDs partagent une broche cathode commune, tandis que chaque broche anode contrôle l’intensité de la couleur correspondante.

En variant l’intensité du signal électrique appliqué à chaque anode, nous pouvons créer une large gamme de couleurs. Par exemple, le mélange de lumières rouge et verte à haute intensité donnera une lumière jaune, tandis que la combinaison de lumières bleue et verte produira du cyan.

À travers ce projet, nous allons explorer les principes du mélange de couleurs additives et libérer notre créativité en manipulant la LED RGB pour afficher des couleurs captivantes et vibrantes.

Composants nécessaires

Dans ce projet, nous aurons besoin des composants suivants.

Il est définitivement pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit de démarrage ESP32

320+

ESP32 Starter Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

ESP32 carte

Acheter

Extension de caméra ESP32

ACHETER

Plaque d’essai

Acheter

Fils de connexion

Acheter

Résistance

Acheter

LED RVB

Acheter

Broches disponibles

Voici une liste des broches disponibles sur la carte ESP32 pour ce projet.

Broches disponibles

IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

Schéma

../../_images/circuit_2.3_rgb.png

Les broches PWM pin27, pin26 et pin25 contrôlent respectivement les broches rouge, vert et bleu de la LED RGB, et connectent la broche cathode commune à la masse (GND). Cela permet à la LED RGB d’afficher une couleur spécifique en superposant la lumière sur ces broches avec différentes valeurs PWM.

Câblage

../../_images/rgb_pin.jpg

La LED RGB a 4 broches : la broche longue est la cathode commune, qui est généralement connectée à la masse (GND) ; la broche gauche à côté de la broche la plus longue est rouge ; et les deux broches à droite sont vert et bleu.

../../_images/2.3_color_light_bb.png

Code

Note

  • Ouvrez le fichier 2.3_colorful_light.py situé dans le chemin esp32-starter-kit-main\micropython\codes, ou copiez et collez le code dans Thonny. Puis cliquez sur « Run Current Script » ou appuyez sur F5 pour l’exécuter.

  • Assurez-vous de sélectionner l’interpréteur « MicroPython (ESP32).COMxx » dans le coin inférieur droit.

from machine import Pin, PWM
import time

# Définir les broches GPIO pour la LED RGB
RED_PIN = 27
GREEN_PIN = 26
BLUE_PIN = 25

# Configurer les canaux PWM
red = PWM(Pin(RED_PIN))
green = PWM(Pin(GREEN_PIN))
blue = PWM(Pin(BLUE_PIN))

# Définir la fréquence PWM
red.freq(1000)
green.freq(1000)
blue.freq(1000)

def set_color(r, g, b):
    red.duty(r)
    green.duty(g)
    blue.duty(b)

while True:
    # Définir différentes couleurs et attendre un moment
    set_color(1023, 0, 0) # Rouge
    time.sleep(1)
    set_color(0, 1023, 0) # Vert
    time.sleep(1)
    set_color(0, 0, 1023) # Bleu
    time.sleep(1)
    set_color(1023, 0, 1023) # Violet
    time.sleep(1)

Lorsque le script s’exécute, vous verrez les LEDs RGB afficher rouge, vert, bleu, violet, etc.

En savoir plus

Vous pouvez également définir la couleur que vous souhaitez avec le code suivant avec les valeurs de couleur familières de 0 à 255.

Note

  • Ouvrez le fichier 2.3_colorful_light_rgb.py situé dans le chemin esp32-starter-kit-main\micropython\codes, ou copiez et collez le code dans Thonny. Puis cliquez sur « Run Current Script » ou appuyez sur F5 pour l’exécuter.

  • Assurez-vous de sélectionner l’interpréteur « MicroPython (ESP32).COMxx » dans le coin inférieur droit.

from machine import Pin, PWM
import time

# Définir les broches GPIO pour la LED RGB
RED_PIN = 27
GREEN_PIN = 26
BLUE_PIN = 25

# Configurer les canaux PWM
red = PWM(Pin(RED_PIN))
green = PWM(Pin(GREEN_PIN))
blue = PWM(Pin(BLUE_PIN))

# Définir la fréquence PWM
red.freq(1000)
green.freq(1000)
blue.freq(1000)

# Mappage des valeurs d'entrée d'une plage à une autre
def interval_mapping(x, in_min, in_max, out_min, out_max):
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

# Convertir les valeurs de couleur (0-255) en valeurs de cycle de service (0-1023)
def color_to_duty(rgb_value):
    rgb_value = int(interval_mapping(rgb_value,0,255,0,1023))
    return rgb_value

def set_color(red_value,green_value,blue_value):
    red.duty(color_to_duty(red_value))
    green.duty(color_to_duty(green_value))
    blue.duty(color_to_duty(blue_value))

while True:
    # Définir différentes couleurs et attendre un moment
    set_color(255, 0, 0) # Rouge
    time.sleep(1)
    set_color(0, 255, 0) # Vert
    time.sleep(1)
    set_color(0, 0, 255) # Bleu
    time.sleep(1)
    set_color(255, 0, 255) # Violet
    time.sleep(1)

Ce code est basé sur l’exemple précédent, mais il mappe les valeurs de couleur de 0 à 255 à une plage de cycle de service de 0 à 1023.

  • La fonction interval_mapping est une fonction utilitaire qui mappe une valeur d’une plage à une autre. Elle prend cinq arguments : la valeur d’entrée, les valeurs minimales et maximales de la plage d’entrée, et les valeurs minimales et maximales de la plage de sortie. Elle renvoie la valeur d’entrée mappée à la plage de sortie.

    def color_to_duty(rgb_value):
        rgb_value = int(interval_mapping(rgb_value,0,255,0,1023))
        return rgb_value
    
  • La fonction color_to_duty prend une valeur RGB entière (par exemple 255,0,255) et la mappe à une valeur de cycle de service adaptée aux broches PWM. La valeur RGB d’entrée est d’abord mappée de la plage 0-255 à la plage 0-1023 en utilisant la fonction interval_mapping. La sortie de interval_mapping est ensuite renvoyée comme valeur de cycle de service.

    def color_to_duty(rgb_value):
        rgb_value = int(interval_mapping(rgb_value,0,255,0,1023))
        return rgb_value
    
  • La fonction color_set prend trois arguments entiers : les valeurs rouge, vert et bleu pour la LED. Ces valeurs sont passées à color_to_duty pour obtenir les valeurs de cycle de service pour les broches PWM. Les valeurs de cycle de service sont ensuite définies pour les broches correspondantes en utilisant la méthode duty.

    def set_color(red_value,green_value,blue_value):
        red.duty(color_to_duty(red_value))
        green.duty(color_to_duty(green_value))
        blue.duty(color_to_duty(blue_value))