ESP32 - LED - Faden

Deze tutorial leert u hoe u:

Over LED

LED Pinout

Een LED heeft twee pinnen:

  • Kathode(-) pin: verbind deze pin met GND (0V)
  • Anode(+) pin: wordt gebruikt om de staat van de LED te regelen
LED Pinout

Hoe werkt de LED

Na het verbinden van de kathode(-) met GND:

  • Als we GND verbinden met de anode(+), is de LED UIT.
  • Als we VCC verbinden met de anode(+), is de LED AAN.
  • Als we een PWM-signaal aan de anode(+) pin genereren, is de helderheid van de LED evenredig met de PWM duty cycle. De PWM duty cycle varieert van 0 tot 255. Hoe groter de PWM duty cycle, hoe helderder de LED.
    • Als de PWM-waarde 0 is, komt dit overeen met GND ⇒ LED is UIT
    • Als de PWM-waarde 255 is, komt dit overeen met VCC ⇒ LED brandt op maximale helderheid.
    Hoe LED werkt

    ※ Notiz:

    Meestal is een weerstand nodig om de LED te beschermen tegen doorbranden. De waarde van de weerstand hangt af van de specificaties van de LED.

    ESP32 - LED faden

    De digitale output-pinnen van de ESP32 kunnen geprogrammeerd worden om een PWM-signaal te genereren. Door de anode(+) pin van de LED te verbinden met een ESP32-pin, de kathode(-) met GND, en vervolgens de ESP32 te programmeren om de duty cycle van PWM te veranderen, kunnen we de LED laten faden.

Bedradingsschema tussen LED en ESP32

ESP32 LED Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

Hoe te programmeren

  • Configureer een pin van de ESP32 als digitale uitgang met de functie pinMode(). Bijvoorbeeld pin GPIO18:
pinMode(18, OUTPUT);
  • Stel de helderheid van de LED in door een PWM-signaal met de bijbehorende duty cycle te genereren met de functie analogWrite():
analogWrite(18, brightness);

Waarbij brightness een waarde is van 0 tot 255.

ESP32 Code - Eenvoudig Fade Voorbeeld

Snelle Stappen

  • Als u voor het eerst een ESP32 gebruikt, bekijk dan hoe u de omgeving voor ESP32 instelt in Arduino IDE.
  • Maak de bedrading volgens bovenstaande afbeelding.
  • Verbind het ESP32 bord met uw PC via een micro USB-kabel.
  • Open Arduino IDE op uw PC.
  • Selecteer het juiste ESP32 bord (bijv. ESP32 Dev Module) en de COM-poort.
  • Kopieer onderstaande code en plak deze in Arduino IDE.
/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin GPIO18 to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin GPIO18: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); }
  • Compileer en upload de code naar het ESP32 bord door te klikken op de Upload knop in Arduino IDE.
Arduino IDE Upload Code
  • Bekijk de helderheid van de LED.

Regel-voor-regel Code Uitleg

De bovenstaande ESP32 code bevat regel-voor-regel uitleg. Lees a.u.b. de commentaren in de code!

※ Notiz:

In het bovenstaande voorbeeld wordt de delay() functie gebruikt om in- en uit te faden. De delay() functie maakt het faden van de LED ongelijkmatig en blokkeert andere code. In de volgende delen leren we hoe u vloeiend kan faden zonder andere code te blokkeren met behulp van de millis() functie.

Hoe de LED te laten faden (fade-in) binnen een periode zonder delay()

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin GPIO18 to be an output fadeStartTime = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

Hoe de LED te laten faden (fade-out) binnen een periode zonder delay()

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin GPIO18 to be an output fadeStartTime = millis(); } // fade-out in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = 255 - map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!