Arduino základy – 6. Regulace jasu LED
Tento článek se zabývá použitím funkce analogWrite() pro ovládání jasu LED diody. Toho je docíleno pomocí pulzně-šířkové modulace (PWM), při které je LED rychle vypínána a zapínána. To se pro lidské oko projeví jako změna jejího jasu. Více o PWM a funkci analogWrite() se můžete dočíst zde.
Obsah článku:
Potřebný hardware
- Arduino
- Nepájivé kontaktní pole
- LED
- Rezistor o odporu 220 Ω
Obvod
Připojte anodu (delší nožička) vaší LED na pin 9 Arduina přes rezistor o odporu 220 Ω.
Katodu (kratší nožička) připojte přímo k zemi.
Schéma
Kód
Ve funkcí setup() pouze nastavíme digitální pin 9 jako výstup. Funkce analogWrite(), kterou budete používat v hlavní smyčce kódu k regulaci jasu LED, vyžaduje dva parametry – první funkci sděluje, jaký pin právě ovládá, a druhý obsahuje informaci o hodnotě (ta je osmibitová – čili může nabývat hodnot 0 až 255).
V našem programu budeme LED postupně rozjasňovat a zhasínat. S časovou prodlevou 30ms budeme postupně navyšovat, popřípadě snižovat hodnotu jejího jasu. Hodnota jasu je uchovávána v proměnné brightness, skok, o který se v každém průběhu funkce loop() hodnota změní udává proměnná fadeAmount.
Pokud má proměnná brightness jednu z extrémních hodnot (0 nebo 255), tak se fadeAmount změní na jeho negativní protějšek. Jinými slovy, pokud brightness == 255, pak fadeAmount = -5. Pokud brightness == 0, pak fadeAmount = 5. Tato podmínka ve smyčce způsobí, že brightness cyklicky pulzuje mezi 0 a 255.
Čekání na konci loop() je nutné, protože v případě, že bychom ho nepoužili, měnila by se hodnota brightness tak rychle, že by naše oko změnu nepostřehlo a led by měla konstantní jas.
/* Změna jasu (Fade) Tento příklad ukazuje, jak způsobit zhasínání a rozsvěcení LED na pinu 9 pomocí funkce analogWrite(). */ int led = 9; // pin, ke kterému je LED připojena int brightness = 0; // jas LED int fadeAmount = 5; // o kolik jednotek se změní hodnota při jednom kroku // proces setup se spustí jednou, jakmile zmáčknete reset void setup() { // nastaví pin 9 jako výstup: pinMode(led, OUTPUT); } // loop se bude neustále opakovat void loop() { // nastaví jas LED na pinu 9 analogWrite(led, brightness); // změní jas pro příští proces smyčky: brightness = brightness + fadeAmount; // změní hodnotu fadeAmount if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } // počká 30 milisekund delay(30); }
Přeloženo ze stránky https://arduino.cc/en/Tutorial/HomePage a mírně upraveno.
- Zažijte bouřku přímo v pokoji - 9.7.2024
- EggBot aneb kraslice trochu jinak - 20.3.2024
- Jak vyrobit plošný spoj pomocí laseru TOOCA L1? - 9.3.2024