Lekce 2
Tentokrát LED jen nerozsvítíte – necháte ji plynule rozsvěcet a zhasínat, jako by „dýchala“. Naučíte se k tomu pulzně šířkovou modulaci (PWM), jednoduchý trik, kterým Arduino řídí nejen jas LED, ale třeba i otáčky motorů.
Popisek obrázku: delší nožka LED (anoda, +) vede přes rezistor 220 Ω na pin 9, kratší nožka (katoda, −) jde na GND. Pin 9 je důležitý – je to jeden z pinů, které umí PWM (na desce bývá označený vlnovkou ~).
| Komponenta | Arduino |
|---|---|
| LED + (delší nožka) přes rezistor 220 Ω | pin 9 (~) |
| LED − (kratší nožka) | GND |
Arduino umí na běžném pinu posílat jen dvě hodnoty – zapnuto (5 V) a vypnuto (0 V). Jak tedy LED rozsvítit jen napůl? Pomůže PWM (pulzně šířková modulace): pin se velmi rychle zapíná a vypíná a podle toho, jak velkou část času je zapnutý (tomu se říká střída), se mění výsledný jas. Když je zapnutý jen krátce, LED svítí slabě; když většinu času, svítí jasně. Přepínání je tak rychlé, že ho oko nevidí jako blikání – vidí plynulou změnu jasu. V kódu k tomu slouží příkaz analogWrite() s hodnotou 0 (zhasnuto) až 255 (plný jas).
Dobré vědět: PWM funguje jen na některých pinech Arduina – poznáte je podle vlnovky ~ u čísla (na Uno jsou to piny 3, 5, 6, 9, 10 a 11). Na ostatních pinech analogWrite() nefunguje.
// Řízení LEDky PWMkou
// LEDka se bude pomalu rozsvěcovat a zhasínat, dokola
// Email: podpora@laskakit.cz · Web: laskakit.cz
const int ledPin = 9; // číslo pinu LEDky (musí umět PWM ~)
void setup() {
pinMode(ledPin, OUTPUT); // nastavení pinu LEDky jako výstupu
}
void loop() {
for (int a = 0; a <= 255; a++) { // smyčka od 0 do 255
analogWrite(ledPin, a); // nastavit jas LEDky
delay(8); // počkat 8 ms
}
for (int a = 255; a >= 0; a--) { // smyčka od 255 do 0
analogWrite(ledPin, a); // nastavit jas LEDky
delay(8); // počkat 8 ms
}
delay(800); // počkat 800 ms
}
~ (na Uno např. 9).QJak PWM dosáhne toho, že LED svítí „napůl“?