LED dimmen met Arduino/Wemos
Benodigde Hardware
- Arduino (bijv. Uno, Nano)
- 2x LED (elke kleur)
- 2x 220Ω (Ohm) weerstand
- Breadboard
- Aansluitdraden (jumper wires)
Stap 1: De Hardware Aansluiten
Voordat je de code uploadt, sluit je de componenten als volgt aan:
- De lange poot van een LED (de anode, +) verbind je met een digitale PWM-pin van de Arduino via een 220Ω weerstand.
- De korte poot van een LED (de kathode, -) verbind je met de GND (ground) van de Arduino.
Op een Arduino Uno/Nano zijn de PWM-pinnen gemarkeerd met een tilde (~), bijvoorbeeld pinnen 3, 5, 6, 9, 10, 11. We gebruiken pin 13 en 14 in dit voorbeeld.
Aansluitschema:
- LED 1: Arduino Pin ~13 → 220Ω Weerstand → Lange poot LED 1 → Korte poot LED 1 → Arduino GND
- LED 2: Arduino Pin ~14 → 220Ω Weerstand → Lange poot LED 2 → Korte poot LED 2 → Arduino GND
Stap 2: De Arduino Code
/*
Arduino Code om twee LED's te dimmen met PWM (Pulse Width Modulation)
De LED's zullen een "ademend" effect vertonen (fade in en fade out).
*/
// Definieer de pinnen waar de LED's op zijn aangesloten.
// Zorg ervoor dat dit PWM-pinnen zijn (gemarkeerd met ~ op de Arduino).
const int ledPin1 = 13;
const int ledPin2 = 14;
// Variabelen om de snelheid van het dimmen te bepalen.
int fadeDelay = 10; // Vertraging in milliseconden tussen elke stap.
void setup() {
// Stel de LED-pinnen in als OUTPUT.
// Dit is nodig om een signaal naar de LED's te kunnen sturen.
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
analogWrite(ledPin1, 0);
analogWrite(ledPin2, 0);
}
void loop() {
// LED 1 wordt feller,
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin1, brightness); // Gaat van 0 naar 255
delay(fadeDelay);
}
// LED 1 dimt
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin1, brightness); // Gaat van 255 naar 0
delay(fadeDelay);
}
// LED 2 wordt feller
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin2, brightness); // Gaat van 0 naar 255
delay(fadeDelay);
}
// LED 2 dimt
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin2, brightness); // Gaat van 255 naar 0
delay(fadeDelay);
}
}
Stap 3: Uitleg van de Code
- const int ledPin1 = 13;
Hier definiëren we een constante variabele ledPin1 met de waarde 13. Dit maakt de code leesbaarder en makkelijker aan te passen als je een andere pin wilt gebruiken. Hetzelfde geldt voor ledPin2. - int fadeDelay = 10;
Dit bepaalt de snelheid van het faden. Een hogere waarde (bv. 20) maakt het faden langzamer, een lagere waarde (bv. 5) maakt het sneller. - void setup()
Deze functie wordt één keer uitgevoerd wanneer de Arduino opstart.- pinMode(ledPin1, OUTPUT); vertelt de Arduino dat pin 13 een output-pin is, zodat we er stroom naartoe kunnen sturen.
- void loop()
Deze functie wordt continu herhaald zolang de Arduino stroom heeft.- Eerste for-loop (Fade In):
- for (int brightness = 0; brightness <= 255; brightness++) start een teller genaamd brightness bij 0 en telt deze in elke stap met 1 op, totdat 255 is bereikt.
- analogWrite(ledPin1, brightness); Dit is de kern van het dimmen. analogWrite() stuurt een PWM-signaal naar de pin. De waarde brightness (tussen 0 en 255) bepaalt de “duty cycle” van het signaal. Een waarde van 0 betekent dat de LED uit is, 128 betekent half vermogen, en 255 betekent volledig aan.
- delay(fadeDelay); pauzeert het programma voor het aantal milliseconden dat is ingesteld in fadeDelay, waardoor het faden soepel en zichtbaar wordt.
- Tweede for-loop (Fade Out):
- Deze loop doet hetzelfde, maar telt nu terug van 255 naar 0, waardoor de LED’s weer langzaam uitgaan.
- Eerste for-loop (Fade In):
