Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi 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 aperçus.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

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

1.1.2 LED RVB

Introduction

Dans ce projet, nous allons contrôler une LED RVB pour afficher diverses couleurs.

Composants nécessaires

Pour ce projet, nous avons besoin des composants suivants.

../_images/1.1.2_rgb_led_list.png

Il est très pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

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

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LED RVB

ACHETER

Schéma de câblage

Après avoir connecté les broches R, G et B à une résistance de limitation de courant, connectez-les respectivement aux GPIO17, GPIO18 et GPIO27. La broche la plus longue (GND) de la LED se connecte à la masse (GND) du Raspberry Pi. Lorsque les trois broches reçoivent différentes valeurs PWM, la LED RVB affichera différentes couleurs.

Nom T-Board

Physique

BCM

GPIO17

Pin 11

17

GPIO18

Pin 12

18

GPIO27

Pin 13

27

../_images/1.1.2_rgb_led_schematic.png

Procédures expérimentales

Étape 1 : Construisez le circuit.

../_images/1.1.2_rgbLed_circuit.png

Étape 2 : Ouvrez le fichier de code.

cd ~/raphael-kit/python-pi5

Étape 3 : Exécutez.

sudo python3 1.1.2_rgbLed_zero.py

Après l’exécution du code, vous verrez que la LED RVB affiche rouge, vert, bleu, jaune, rose et cyan.

Avertissement

Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.

Code

Note

Vous pouvez modifier/réinitialiser/copier/exécuter/arrêter le code ci-dessous. Mais avant cela, vous devez aller au chemin source comme raphael-kit/python-pi5. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

#!/usr/bin/env python3
from gpiozero import RGBLED
from time import sleep

# Define a list of colors for the RGB LED in RGB format (Red, Green, Blue).
# Each color component ranges from 0 (off) to 1 (full intensity).
COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]

# Initialize an RGB LED. Connect the red component to GPIO 17, green to GPIO 18, and blue to GPIO 27.
rgb_led = RGBLED(red=17, green=18, blue=27)

try:
    # Continuously cycle through the defined colors.
    while True:
        for color in COLORS:
            # Set the RGB LED to the current color.
            rgb_led.color = color
            # Output the current color to the console.
            print(f"Color set to: {color}")
            # Wait for 1 second before switching to the next color.
            sleep(1)

except KeyboardInterrupt:
    # Handle a KeyboardInterrupt (Ctrl+C) to exit the loop gracefully.
    # GPIO cleanup will be managed automatically by GPIO Zero on script termination.
    pass

Explication du code

  1. Cette section importe la classe RGBLED de la bibliothèque gpiozero pour contrôler une LED RVB, et la bibliothèque time pour implémenter des délais dans le code.

    #!/usr/bin/env python3
    from gpiozero import RGBLED
    from time import sleep
    
    # Define a list of colors for the RGB LED in RGB format (Red, Green, Blue).
    # Each color component ranges from 0 (off) to 1 (full intensity).
    
  2. La liste COLORS contient des tuples représentant différentes couleurs au format RVB. En attribuant différentes valeurs de modulation de largeur d’impulsion (PWM) à chacune des broches R, G et B via l’attribut rgb_led.color, la LED peut produire une variété de couleurs. Les valeurs PWM varient de 0 à 1, où 0 représente aucune intensité (éteint) et 1 représente une intensité maximale pour chaque composant de couleur.

  3. Par exemple, régler rgb_led.color = (1, 0, 0) rend la LED rouge, car cela met l’intensité maximale pour le composant rouge tout en éteignant les composants vert et bleu. De même, des combinaisons variées de ces valeurs produisent différentes couleurs. Cette technique de mélange des couleurs par PWM permet de créer une large gamme de couleurs sur la LED RVB.

    COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
    
  4. Une LED RVB est initialisée avec ses composants rouge, vert et bleu connectés respectivement aux broches GPIO 17, 18 et 27.

    # Initialize an RGB LED. Connect the red component to GPIO 17, green to GPIO 18, and blue to GPIO 27.
    rgb_led = RGBLED(red=17, green=18, blue=27)
    
  5. La boucle while True: parcourt en continu les couleurs définies dans COLORS. Pour chaque couleur, rgb_led.color = color règle la LED sur cette couleur, et sleep(1) fait une pause de 1 seconde.

    try:
        # Continuously cycle through the defined colors.
        while True:
            for color in COLORS:
                # Set the RGB LED to the current color.
                rgb_led.color = color
                # Output the current color to the console.
                print(f"Color set to: {color}")
                # Wait for 1 second before switching to the next color.
                sleep(1)
    
  6. Cette section gère proprement une KeyboardInterrupt (comme appuyer sur Ctrl+C). L’instruction pass est utilisée comme un espace réservé pour indiquer qu’aucune action spécifique n’est entreprise lors de l’interruption, car GPIO Zero gère automatiquement le nettoyage des GPIO.

    except KeyboardInterrupt:
        # Handle a KeyboardInterrupt (Ctrl+C) to exit the loop gracefully.
        # GPIO cleanup will be managed automatically by GPIO Zero on script termination.
        pass