09.E Stmievanie LED pomocou PWM
Ciele lekcie
- pochopiť, čo je PWM (Pulse Width Modulation)
- naučiť sa používať funkciu
analogWrite() - vedieť ovládať jas LED (0–100 %)
- vedieť identifikovať PWM piny na doske
Potrebný materiál
Pre Arduino Uno (žiaci):
- Arduino Uno
- 1× LED (ľubovoľná farba)
- 1× rezistor 220–330 Ω
- prepojovacie vodiče
- USB kábel do PC
Pre Arduino Mega (učiteľ):
- identické zapojenie
Teória pre študentov (stručne a jasne)
Čo je PWM
PWM = striedová modulácia. Arduino veľmi rýchlo zapína a vypína výstup, čím simuluje rôzne úrovne výkonu.
- 0 % → LED nesvieti (OFF)
- 50 % → LED svieti na polovicu
- 100 % → LED svieti naplno (trvalé ON)
LED nebliká, pretože prepínanie je rýchle (cca 490 Hz), takže oko vidí len priemer.
Rozsah hodnôt pre analogWrite()
analogWrite(pin, hodnota)
kde hodnota je od 0 do 255
- 0 = 0 %
- 127 = cca 50 %
- 255 = 100 %
Na ktoré piny to funguje?
PWM piny sú na Arduino Uno označené ~
Na Uno sú to:~3, ~5, ~6, ~9, ~10, ~11
Na Mega sú to piny:~2, ~3, ~4, ~5, ~6, ~7, ~8, ~9, ~10, ~11, ~12, ~13, ~44, ~45, ~46
Hardvérové zapojenie
- LED anóda (dlhšia nožička) → cez rezistor → na pin ~9
- LED katóda (kratšia nožička) → GND
Štandardná schéma:
Pin 9 → Rezistor 220 Ω → Anóda LED
Katóda LED → GND
Program – Stmievanie (plynulé dýchanie)
int ledPin = 9;
int jas = 0;
int smer = 1; // +1 = zvyšujeme, -1 = znižujeme
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
analogWrite(ledPin, jas);
jas = jas + smer;
if (jas <= 0 || jas >= 255) {
smer = -smer;
}
delay(5);
}
Vysvetlenie kódu
analogWrite()nastavuje svetlo LED podľa hodnoty 0–255jassa postupne zvyšuje až na 255smerotočí smer zvyšovania na znižovaniedelay(5)určuje rýchlosť zmeny (5 ms medzi krokmi)
Úlohy pre žiakov
- Zmeniť rýchlosť dýchania (napr.
delay(10),delay(1)) - Zmeniť rozsah stmievacej krivky:
- od 50 do 200 namiesto 0–255
- Zmeniť PWM pin (napr. ~6 alebo ~11)
- Pridať tlačidlo, ktorým sa dýchanie zapína/vypína (kombinácia s predošlou lekciou)
Rozšírenie pre pokročilejších
- vysvetliť pojem duty cycle
- premietnuť hodnoty na percentá (napr.
jas / 255.0 * 100) - pridať sériový výpis aktuálneho jasu
Poznámky k výučbe
- vhodné demonštrovať farebné LED (zelená/červená → rozdiel jasu je viditeľný)
- vhodné prejsť si PWM piny na reálnych doskách UNO a MEGA
- IDE môže ukázať žiakom rozdiel medzi
digitalWrite()aanalogWrite()


