Tutoriel ESP32 34/55 - Dégradé de couleurs avec LED RGB et potentiomètre | Kit d'apprentissage IoT ESP32 de SunFounder
Dans ce tutoriel, nous allons créer un effet de dégradé de couleurs en utilisant une LED RVB qui s'ajuste en fonction de la position d'un potentiomètre (molette). Le projet utilise un microcontrôleur ESP32, qui offre des capacités Wi-Fi et Bluetooth intégrées, ce qui en fait un choix polyvalent pour les projets IoT. En tournant le potentiomètre, nous pouvons passer en douceur entre différentes couleurs, démontrant à la fois la fonctionnalité de la LED RVB et la capacité de lire des valeurs analogiques à partir du potentiomètre.

Ce projet est idéal pour apprendre sur la PWM (Modulation de Largeur d'Hermite) et comment contrôler des dispositifs analogiques avec un microcontrôleur. Tout au long de ce tutoriel, nous discuterons des composants matériels nécessaires, des instructions de câblage et fournirons des extraits de code pour vous aider à réaliser le projet. Pour une explication plus visuelle, n'oubliez pas de consulter la vidéo associée (dans la vidéo à 02:15).
Matériel expliquée
Les principaux composants utilisés dans ce projet comprennent le microcontrôleur ESP32, une LED RGB et un potentiomètre. L'ESP32 est un microcontrôleur puissant capable de gérer diverses tâches, y compris la communication sans fil, ce qui le rend adapté aux applications IoT. La LED RGB se compose de trois LED individuelles (rouge, verte et bleue) qui peuvent être mélangées pour produire une large gamme de couleurs. Le potentiomètre agit comme une résistance variable qui fournit une sortie de tension variable en fonction de sa position.
La LED RGB peut être connectée dans deux configurations : anode commune ou cathode commune. Dans ce projet, nous utiliserons une configuration à anode commune, où toutes les anodes sont reliées ensemble à une tension positive, ce qui nous permet de contrôler la luminosité de chaque LED individuellement avec PWM. Le potentiomètre sera connecté à une entrée analogique sur l'ESP32 pour lire sa position et ajuster les valeurs RGB en conséquence.
Détails de la fiche technique
| Fabricant | SunFounder |
|---|---|
| Numéro de pièce | LED RGB |
| Tension logique/IO | 3,3 V |
| Tension d'alimentation | 5 V |
| Courant de sortie (par canal) | 20 mA |
| Courant de crête (par canal) | 30 mA |
| Directives de fréquence PWM | 5 kHz |
| Seuils de logique d'entrée | 0,3 V (faible) / 2,7 V (élevé) |
| Chute de tension / RDS(on)/ saturation | 1,8 V (typ.) |
| Limites thermiques | Température de fonctionnement : -40°C à +85°C |
| Paquet | Trou-à-travers |
| Notes / variantes | Configuration d'anode commune |
- Utilisez une résistance de 220 Ohms pour chaque canal LED afin de limiter le courant.
- Assurez-vous d'une tension d'alimentation correcte (5V) pour la LED RGB.
- Connectez l'anode commune à l'alimentation en tension positive.
- Utilisez la modulation de largeur d'impulsion (PWM) pour contrôler la luminosité de chaque couleur de LED.
- Soyez prudent avec la connexion du potentiomètre pour éviter les entrées flottantes.
- Vérifiez que l'ESP32 est correctement alimenté avant de télécharger le code.
Instructions de câblage
Pour câbler la LED RGB et le potentiomètre à l'ESP32, commencez par connecter la broche d'anode commune de la LED RGB à la broche d'alimentation de 3,3 V sur l'ESP32. Les broches rouge, verte et bleue de la LED RGB se connecteront aux broches27,26, et25respectivement. Assurez-vous de placer une résistance de 220 Ohms en série avec chaque broche de couleur LED pour limiter le courant et protéger la LED.
Ensuite, connectez le potentiomètre à l'ESP32 en reliant la broche gauche à la broche d'alimentation 3,3V, la broche droite à la masse et la broche du milieu à14sur l'ESP32. Cette configuration permet à l'ESP32 de lire la tension analogique du potentiomètre, qui sera utilisée pour ajuster la couleur de la LED RGB en fonction de sa position.
Exemples de code et guide étape par étape
Dans la fonction de configuration, nous définissons les broches pour la LED RGB et le potentiomètre, ainsi que nous initialisons les réglages PWM. Le code suivant montre comment nous configurons les broches de la LED RGB :
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}Dans cet extrait, nous définissons les broches pour les LED rouge, verte et bleue, et les connectons à des canaux PWM avec une fréquence et une résolution définies.
La fonction boucle lit la valeur du potentiomètre et la convertit en une valeur de teinte, qui est ensuite utilisée pour déterminer les valeurs RGB. L'extrait suivant illustre ce processus :
void loop() {
int knobValue = analogRead(KNOB_PIN);
float hueValue = (float)knobValue / 4095.0;
int hue = (int)(hueValue * 360);
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
setColor(red, green, blue);
}Ce code lit la valeur analogique du potentiomètre, la normalise et calcule la teinte correspondante. Il appelle ensuite leHUEtoRGBfonction pour convertir la teinte en valeurs RGB, qui sont transmises ausetColorfonction pour mettre à jour la LED.
Démonstration / À quoi s'attendre
Une fois le câblage terminé et le code téléchargé, vous devriez pouvoir tourner le potentiomètre pour changer la couleur de la LED RGB de manière fluide. En tournant le bouton, la LED passera par différentes couleurs en fonction de la valeur de teinte calculée à partir de la position du bouton. Si la LED ne s'allume pas ou se comporte de manière inattendue, vérifiez le câblage et assurez-vous que le potentiomètre est correctement connecté (dans la vidéo à 10:45).
Horodatages vidéo
- 00:00 Début
- 2:11 Introduction au projet
- 4:31 LED RGB
- 8:18 Couleur RVB
- 12:18 Explication du câblage
- 17:59 Code Arduino expliqué
- 24:12 Sélection de la carte ESP32 et du port COM dans l'Arduino IDE
- 25:54 Démonstration
/*
* // Définir les broches LED RGB
*/
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Définir la fréquence et la résolution du PWM.
const int freq = 5000;
const int resolution = 8;
// Définissez la broche pour le bouton.
#define KNOB_PIN 14
void setup() {
Serial.begin(115200);
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
// Lisez la valeur du bouton.
int knobValue = analogRead(KNOB_PIN);
Serial.println(knobValue);
// Normalisez la valeur du bouton dans la plage de 0 à 1.
float hueValue = (float)knobValue / 4095.0;
// Convertissez la valeur normalisée en une valeur HUE (0-360)
int hue = (int)(hueValue * 360);
// Convertir la valeur HUE en valeurs RGB
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
// Mettez à jour la LED RGB avec les nouvelles valeurs de couleur.
setColor(red, green, blue);
}
void setColor(int red, int green, int blue) {
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
// Convertir une valeur HUE en valeurs RGB
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;
} else if (h < 2.0) {
r = x;
g = c;
b = 0;
} else if (h < 3.0) {
r = 0;
g = c;
b = x;
} else if (h < 4.0) {
r = 0;
g = x;
b = c;
} else if (h < 5.0) {
r = x;
g = 0;
b = c;
} else {
r = c;
g = 0;
b = x;
}
float m = 1.0 - c;
*red = (int)((r + m) * 255);
*green = (int)((g + m) * 255);
*blue = (int)((b + m) * 255);
}
Common Course Links
Common Course Files
Ressources et références
-
DocumentationTutoriel ESP32 34/55 - Page doc SunFounder pour le dégradé de couleursdocs.sunfounder.com
Fichiers📁
Aucun fichier disponible.