Close

Arduino základy – 6. Regulace jasu LED

Obrázek pro postupné stmívání LED v Arduinu, zapojení na breadboardu

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.

Potřebný hardware

  • Arduino
  • Nepájivé kontaktní pole
  • LED
  • Rezistor o odporu 220 Ω

Obvod

simplefade_bb

Zapojení obvodu

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

simplefade_pin9_schem

Schéma zapojení

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.

Oldřich Horáček

Oldřich Horáček

"Žádný člověk se nestane profíkem jen tak přes noc..."
Jsem zapálený hardwerář a tvůrce. Snažím se lidem přibližovat technologie, usnadňovat začátky a podporovat zajímavé projekty. Web Arduino.cz vznikl právě s tímto cílem. Moc mě baví věci udávat do pohybu a rozvíjet :-).
Oldřich Horáček

Napsat komentář