4.3 Opdracht: potmeter dimt de LED
Nu combineer je een analoge ingang (de potmeter) met een analoge uitgang (PWM). Je draait aan de knop en de LED wordt feller of zwakker.
Simulator laden...
Het schaalprobleem
analogRead() geeft 0–1023, maar analogWrite() wil 0–255. Die getallen passen niet op elkaar. Gelukkig bestaat er een functie die een getal van het ene bereik naar het andere omrekent: map().
int helderheid = map(waarde, 0, 1023, 0, 255);
Dit zegt: "neem waarde (die tussen 0 en 1023 ligt) en reken hem om naar het bereik 0 tot 255".
Opdracht 4.3.a: Draaiknop-dimmer
Lees de potmeter op A0 uit, reken de waarde om met map(), en gebruik die om een LED op pin 9 te dimmen.
Klik hier voor een tip!
Je hebt drie stappen in loop(): lees A0 met analogRead(), reken om met map(), en stuur het resultaat naar pin 9 met analogWrite().
Klik hier voor de oplossing!
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
int waarde = analogRead(A0);
int helderheid = map(waarde, 0, 1023, 0, 255);
analogWrite(9, helderheid);
}
Draai je aan de knop, dan verandert waarde, en dus helderheid, en dus de felheid van de LED.
Mogelijke uitbreidingen
- Gebruik twee potmeters voor twee LED's.
- Laat de LED pas branden vanaf de helft van de knop (gebruik een
if). - Stuur de helderheid ook naar de seriële monitor zodat je de waarde ziet.