Note

Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi & Arduino & ESP32 sur Facebook ! Plongez dans l’univers de 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 conseils 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-goûts.

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

  • Promotions festives et concours : Participez à des concours et à des promotions spéciales pour les fêtes.

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

6.5 Dégradé de Couleurs

Êtes-vous prêt à découvrir un monde de couleurs ? Ce projet vous emmènera dans un voyage magique où vous pourrez contrôler une LED RGB et obtenir des transitions de couleurs fluides. Que vous cherchiez à ajouter des couleurs à votre décoration intérieure ou que vous souhaitiez un projet de programmation amusant, ce projet est fait pour vous. Plongeons ensemble dans ce monde coloré !

Composants Nécessaires

Pour ce projet, nous avons besoin des composants suivants.

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

Nom

ÉLÉMENTS 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 AUX COMPOSANTS

LIEN D’ACHAT

ESP32 carte

Acheter

Extension de caméra ESP32

ACHETER

Plaque d’essai

Acheter

Fils de connexion

Acheter

Potentiomètre

Acheter

LED RVB

Acheter

Schéma

../../_images/circuit_6.5_color_gradient_ar.png

Câblage

../../_images/rgb_pin.jpg

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

../../_images/6.5_color_rgb_bb.png

Code

Note

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

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

  • Toujours afficher « Unknown COMxx » ?

Ce projet utilise une LED RGB et un potentiomètre pour créer un effet de mélange de couleurs. Le potentiomètre est utilisé pour ajuster la valeur de teinte de la LED, qui est ensuite convertie en valeurs RGB à l’aide d’une fonction de conversion des couleurs. Les valeurs RGB sont ensuite utilisées pour mettre à jour la couleur de la LED.

Comment ça marche ?

Ce projet se base sur le projet 2.3 Lumière Colorée en ajoutant un potentiomètre pour ajuster la valeur de teinte de la LED. La valeur de teinte est ensuite convertie en valeurs RGB à l’aide d’une fonction de conversion des couleurs.

  1. Dans la fonction loop, lisez la valeur du potentiomètre et convertissez-la en valeur de teinte (0-360).

    int knobValue = analogRead(KNOB_PIN);
    float hueValue = (float) knobValue / 4095.0;
    int hue = (int) (hueValue * 360);
    
  2. Convertissez la valeur de teinte en valeurs RGB à l’aide de la fonction HUEtoRGB(), et mettez à jour la LED avec les nouvelles valeurs de couleur.

    int red, green, blue;
    HUEtoRGB(hue, &red, &green, &blue);
    setColor(red, green, blue);
    
  3. La fonction setColor() définit la valeur des canaux rouge, vert et bleu à l’aide de la bibliothèque LEDC.

    void setColor(int red, int green, int blue) {
        ledcWrite(redPin, red);
        ledcWrite(greenPin, green);
        ledcWrite(bluePin, blue);
    }
    
  4. La fonction HUEtoRGB convertit une valeur de teinte en valeurs RGB en utilisant le modèle de couleur HSL.

    void HUEtoRGB(int hue, int* red, int* green, int* blue) {
        float h = (float) hue / 60.0;
        float c = 1.0;
        float x = c * (1.0 - fabs(fmod(h, 2.0) - 1.0));
        float r, g, b;
        if (h < 1.0) {
            r = c;
            g = x;
            b = 0;
    ...