09.E Stmievanie LED pomocou PWM

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

  1. LED anóda (dlhšia nožička) → cez rezistor → na pin ~9
  2. 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–255
  • jas sa postupne zvyšuje až na 255
  • smer otočí smer zvyšovania na znižovanie
  • delay(5) určuje rýchlosť zmeny (5 ms medzi krokmi)

Úlohy pre žiakov

  1. Zmeniť rýchlosť dýchania (napr. delay(10), delay(1))
  2. Zmeniť rozsah stmievacej krivky:
    • od 50 do 200 namiesto 0–255
  3. Zmeniť PWM pin (napr. ~6 alebo ~11)
  4. 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() a analogWrite()

Pridaj komentár