Note

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

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes post-vente et les défis techniques grâce à l’aide de notre communauté et de notre équipe.

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

  • Aperçus exclusifs : Bénéficiez d’un accès anticipé 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 concours et promotions de vacances.

👉 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 plonger dans 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 LED 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, en mélangeant une lumière rouge et verte à haute intensité, nous obtiendrons une lumière jaune, tandis qu’en combinant la lumière bleue et verte, nous produirons 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 requis

Pour ce projet, nous avons besoin des composants suivants.

Il est certainement 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 à partir des 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

Pins disponibles

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

Pins 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 pins 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. 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 la plus longue est la broche cathode commune, qui est généralement connectée à la masse ; la broche gauche à côté de la plus longue est rouge ; et les deux broches à droite sont vert et bleu.

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

Code

Ici, nous pouvons choisir notre couleur préférée dans un logiciel de dessin (tel que paint) et l’afficher avec la LED RGB.

Note

  • Vous pouvez ouvrir le fichier 2.3_rgb_led.ino sous le chemin esp32-starter-kit-main\c\codes\2.3_rgb_led.

  • Après avoir sélectionné la carte (ESP32 Dev Module) et le port approprié, cliquez sur le bouton Téléverser.

  • Toujours afficher « Unknown COMxx » ?

../../_images/edit_colors.png

Écrivez la valeur RGB dans color_set(), vous pourrez voir la LED RGB afficher les couleurs que vous souhaitez.

Comment ça marche ?

  1. Définir les broches GPIO, les canaux PWM et la fréquence (en Hz) et la résolution (en bits).

    // Définir les broches de la LED RGB
    const int redPin = 27;
    const int greenPin = 26;
    const int bluePin = 25;
    
    // Définir la fréquence PWM et la résolution
    const int freq = 5000;
    const int resolution = 8;
    
  2. La fonction setup() initialise les canaux PWM avec la fréquence et la résolution spécifiées, puis attache les broches LED à leurs canaux PWM correspondants.

    void setup() {
      // Configurer les broches PWM
      ledcAttach(redPin, freq, resolution);
      ledcAttach(greenPin, freq, resolution);
      ledcAttach(bluePin, freq, resolution);
    }
    

    Ici, nous utilisons le LEDC (contrôle LED) périphérique qui est principalement conçu pour contrôler l’intensité des LED, bien qu’il puisse également être utilisé pour générer des signaux PWM à d’autres fins.

    • bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);: Cette fonction est utilisée pour configurer la broche LEDC avec la fréquence et la résolution données. Le canal LEDC sera sélectionné automatiquement.

      • pin sélectionner la broche GPIO.

      • freq sélectionner la fréquence du pwm.

      • resolution_bits sélectionner la résolution pour le canal ledc. La plage est de 1 à 14 bits (1 à 20 bits pour ESP32).

  3. La fonction loop() parcourt diverses couleurs (rouge, vert, bleu, jaune, violet et cyan) avec des intervalles d’une seconde entre chaque changement de couleur.

    void loop() {
        setColor(255, 0, 0); // Rouge
        delay(1000);
        setColor(0, 255, 0); // Vert
        delay(1000);
        setColor(0, 0, 255); // Bleu
        delay(1000);
        setColor(255, 255, 0); // Jaune
        delay(1000);
        setColor(80, 0, 80); // Violet
        delay(1000);
        setColor(0, 255, 255); // Cyan
        delay(1000);
    }
    
  4. La fonction setColor() définit la couleur désirée en écrivant les valeurs de cycle de service appropriées à chaque canal PWM. La fonction prend trois arguments entiers pour les valeurs des couleurs rouge, verte et bleue.

    void setColor(int red, int green, int blue) {
      ledcWrite(redPin, red);
      ledcWrite(greenPin, green);
      ledcWrite(bluePin, blue);
    }
    
    • bool ledcWrite(uint8_t pin, uint32_t duty);: Cette fonction est utilisée pour définir le cycle de service pour la broche LEDC.

      • pin sélectionner la broche LEDC.

      • duty sélectionner le cycle de service à définir pour le canal sélectionné.