Search Code

ESP32 Tutorial 6/55 - RGB-LED gebruiken Project 2.3 - SunFounder's ESP32 IoT-leerkit

ESP32 Tutorial 6/55 - RGB-LED gebruiken Project 2.3 - SunFounder's ESP32 IoT-leerkit

In deze tutorial leren we hoe we een RGB-LED kunnen aansturen met behulp van de ESP32-microcontroller. Dit project helpt je begrijpen hoe je de RGB-LED aansluit en de kleuren ervan aanstuurt met PWM-signalen (Pulse Width Modulation). Aan het einde van deze tutorial kun je elke kleurcombinatie maken door de intensiteit van elke LED-component aan te passen. Dit is een fundamentele vaardigheid voor het creëren van visueel aantrekkelijke projecten.

Om een beter begrip te krijgen van de RGB-LED en de kleurmengmogelijkheden ervan, verkennen we de bedrading en de code die nodig is om deze met de ESP32 aan te sturen. Als je visuele ondersteuning nodig hebt, bekijk dan zeker de video (in video op 03:20) voor een duidelijkere uitleg van de bedrading en code-opstelling.

Hardware uitgelegd

De belangrijkste componenten van dit project zijn de ESP32-module, de RGB-LED en weerstanden. De ESP32 is een krachtige microcontroller met ingebouwde Wi-Fi en Bluetooth, waardoor deze ideaal is voor IoT-toepassingen. De RGB-LED bestaat uit drie afzonderlijke LED's (rood, groen en blauw) in één behuizing, waardoor een breed scala aan kleuren mogelijk is op basis van de combinatie van de drie kleuren.

In onze opstelling wordt de RGB-LED bedraad in een common-anode-configuratie, waarbij de anode-pin is verbonden met een positieve spanning en de kathode-pin van elke kleur onafhankelijk wordt aangestuurd. Op deze manier kunnen we de helderheid van elke kleur aanpassen door PWM-signalen via de ESP32 te sturen.

Datasheet-details

FabrikantSunFounder
OnderdeelnummerRGB-LED-4PIN
Gemeenschappelijk typeCommon anode
Doorlaatspanning (per LED)2,0 V (rood), 3,2 V (groen), 3,2 V (blauw)
Maximale stroom (per LED)20 mA
Bedrijfstemperatuur-25 tot 85 °C
Behuizing4-pins through-hole

  • Gebruik een weerstand van 220 Ω voor elke kleur om de stroom te beperken en schade te voorkomen.
  • Zorg ervoor dat de gemeenschappelijke pin is verbonden met de juiste spanning (3,3 V voor ESP32).
  • Controleer de polariteit bij het aansluiten van de RGB-LED om schade door omgekeerde polariteit te voorkomen.
  • Gebruik PWM om helderheidsniveaus te regelen, met een aanbevolen frequentie rond 5000 Hz.
  • Test elke kleur afzonderlijk voordat je de volledige opstelling bedraadt.

Bedradingsinstructies

Om de RGB-LED op de ESP32 aan te sluiten, begin je met het identificeren van de pinnen op de RGB-LED. De langste pin is de common anode, die wordt verbonden met de 3,3 V-voeding op de ESP32. De andere drie pinnen zijn voor rood, groen en blauw. In onze opstelling verbind je de rode pin met GPIO 27, de groene pin met GPIO 26 en de blauwe pin met GPIO 25. Elk van deze pinnen krijgt ook een weerstand van 220 Ω.

Begin met het plaatsen van de RGB-LED op het breadboard en zorg ervoor dat de common-anode-pin aan de linkerkant zit. Steek de rode pin in het breadboard en verbind deze met één uiteinde van de weerstand, terwijl het andere uiteinde van de weerstand naar GPIO 27 gaat. Herhaal dit voor de groene en blauwe pinnen: verbind de groene pin met GPIO 26 en de blauwe pin met GPIO 25. Verbind ten slotte de gemeenschappelijke pin met de 3,3 V-pin op de ESP32 om het circuit te voltooien. Zorg ervoor dat je ook de ground van de ESP32 met het breadboard verbindt.

ESP32_RGB_LED_wiring_lesson_06

Codevoorbeelden en uitleg

In de code beginnen we met het definiëren van de RGB-LED-pinnen met behulp van constanten. Bijvoorbeeld: const int redPin = 27; definieert de GPIO-pin voor de rode LED. We stellen ook de PWM-frequentie en resolutie in met const int freq = 5000; en const int resolution = 8;. Hiermee worden de benodigde parameters ingesteld voor het regelen van de helderheid van elke LED-kleur.

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

Vervolgens configureren we de PWM-kanalen voor elke kleur in de setup()-functie. De functie ledcAttach() koppelt elke pin aan het overeenkomstige PWM-kanaal. Deze opstelling zorgt ervoor dat we de helderheid van elke kleur onafhankelijk kunnen regelen.

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

In de loop()-functie gebruiken we de functie setColor() om de LED-kleuren te wijzigen. De waarden die aan deze functie worden doorgegeven, vertegenwoordigen de intensiteit van rood, groen en blauw. Zo stelt het aanroepen van setColor(255, 0, 0); de LED in op rood. Na elke kleurwijziging gebruiken we delay(1000); om één seconde te wachten voordat we overschakelen naar de volgende kleur.

void loop() {
  setColor(255, 0, 0); // Rood
  delay(1000);
  setColor(0, 255, 0); // Groen
  delay(1000);
}

Demonstratie / Wat je kunt verwachten

Na het voltooien van de bedrading en het uploaden van de code naar de ESP32, zou je de RGB-LED door verschillende kleuren moeten zien fietsen: rood, groen, blauw, geel, paars en cyaan. Als de LED niet correct oplicht, controleer dan je bedrading en zorg ervoor dat de common anode is verbonden met 3,3 V. Als je onverwachte kleuren opmerkt, controleer dan de weerstandsverbindingen met de LED-pinnen.

Zoals gedemonstreerd in de video (in video op 10:45), kun je door het aanpassen van de waarden in de setColor()-functie verschillende kleuren creëren. Experimenteer met verschillende combinaties om te zien hoe de RGB-LED reageert.

Videotijdstippen

  • 00:00 - Inleiding tot RGB-LED
  • 03:20 - Uitleg over bedrading
  • 10:45 - Doorloop van de code
  • 12:30 - Demonstratie van kleurmenging

Afbeeldingen

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ESP32_RGB_LED_wiring_lesson_06
ESP32_RGB_LED_wiring_lesson_06
806-ESP32 Tutorial 6/55 - Arduino code to control RGB LED with ESP32
Taal: C++
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;

void setup() {
  // Set up PWM pins
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

void loop() {
  setColor(255, 0, 0); // Red
  delay(1000);
  setColor(0, 255, 0); // Green
  delay(1000);
  setColor(0, 0, 255); // Blue
  delay(1000);
  setColor(255, 255, 0); // Yellow
  delay(1000);
  setColor(80, 0, 80); // Purple
  delay(1000);
  setColor(0, 255, 255); // Cyan
  delay(1000);
}

void setColor(int red, int green, int blue) {
  ledcWrite(redPin, red);
  ledcWrite(greenPin, green);
  ledcWrite(bluePin, blue);
}

Hulpmiddelen en referenties

Bestanden📁

Geen bestanden beschikbaar.