2022 © Kouluelektroniikka Oy

Ledin himmentäminen
Hyppää sisältöön

Ledin himmentäminen

Ledin himmentäminen ja kirkkauden säätäminen.

Ledin kytkeminen

Yksinkertainen led kytkentä

Tarvikkeet

Huomaa

Et tarvitse välttämättä lediä tai yhdysjohtosarjaa, mikäli käytät alustan sisäänrakennettua lediä Pin 13.

Ohjelmointi

  1. Kytke Micro-USB johto tietokoneeseen ja kehitysalustaan.
  2. Luo uusi Arduino Sketch valitsemalla File -> New
  3. Valitse yläpalkista LilyPad Arduino USB

    Laitteen valinta
    Laitteen valinta

  4. Aikaisemmassa ohjeessa, kerrottiin mikä rooli erilaisilla lohkoilla koodissa on ja mikä on määrittely.

  5. Määritetään käytettäväksi pinniksi pinni 3 ja sen nimeksi ledFadePin. Määritetään lisäksi kuinka paljon kirkkautta muutetaan alustamalla arvo 5 kokonaisluku int muuttujaan fadeVal, lisäksi alustetaan toinen kokonaisluku int muuttuja brightnessVal arvolla 0 komennolla:

    int fadeVal = 5;
    int brightnessVal = 0;
    
    Jolloin kaikki määrittelyt näyttävät tältä

    #define ledFadePin 3
    
    int fadeVal = 5;    
    int brightnessVal = 0;
    
  6. Määritellään void setup():

    pinMode(ledFadePin, OUTPUT);
    
  7. Määritellään void loop():

    Aluksi on hyvä perehtyä miten kirkkautta säädetään. Mikrokontrollerin ulostulolla on kaksi tilaa päällä tai pois, kun lediä sytytetään ja sammutetaan riittävän nopeasti syntyy illuusio kirkkaasta tai himmeästä ledistä. Hyödyntämällä Arduinon valmista funktiota analogWrite() voidaan tietylle pinnille määrittää kirkkausarvo 0 - 255 väliltä, jossa 0 on pois päältä ja 255 on täysi kirkkaus.

    analogWrite(ledFadePin, brightnessVal);
    

    Nyt muuttujan brightnessVal arvoa muuttamalla saadaan led kirkkaamaksi tai himmeämäksi. Halutaan muuttaa kirkkautta jokaisella suorituskerralla muuttujan fadeVal verran suuremmaksi tai pienemmäksi riippuen kirkastuuko vai himmeneekö ledi.

    brightnessVal += fadeVal;
    

    Huomaa

    Plus- ja miinuslaskut voidaan merkitä suoraan yhtäsuuruusmerkin kanssa peräkkäin += tai -= kun halutaan muuttaa muuttujan arvoa eikä korvata sitä kokonaan.

    Suurimman kirkkauden ollessa 255 tulee ohjelman huomioida ettei tätä ylitetä vaan tällöin aloitetaan laskeminen alaspäin ja vastaavasti kirkkauden ollessa 0 vaihdetaan suunta ja lasketaan ylöspäin. Tämä voidaan toteuttaa ehtolauseella, joka kääntää muuttujan fadeVal:

    if ((brightnessVal <= 0) || (brightnessVal >= 255)) {
        fadeVal = -fadeval;
    } 
    

    Eli aina kun fadeVal saavuttaa ylä- tai alarajan muutetaan fadeVal etumerkki lisäämällä - eteen -> -(+) -> - tai -(-) -> +.

    Ja lisäksi jotta saadaan "hengitys" näkymään tarvitaan hieman viivettä. Jotta täysi kirkastuminen veisi noin sekunnin tulee viiveen pituudeksi noin 20 ms (1000 ms / (255 / 5)) ~ 19,6078... ms.

    delay(20);
    
    ledFade.ino
    /*  
        ledFade.ino Led hengitys
        Kirjoittanut: Nicklas Uusitalo
        Päiväys: 20.03.22
        Led kirkastuu ja himmenee noin sekunnin välein.
    
        Sovellettu avoimen lähdekoodin esimerkistä:
        https://www.arduino.cc/en/Tutorial/BuiltInExamples/Fade
    */
    
    #define ledFadePin 3              // Määritetään käytettävä pinni
    
    int fadeVal = 5;                  // Himmennysporras  
    int brightnessVal = 0;            // Kirkkausarvon alustus
    
    void setup() {
        pinMode(ledFadePin, OUTPUT);      // pinnin tila OUTPUT
    }
    
    void loop() {
        // Kerrotaan mikä pinni kytketään päälle ja millä kirkkaudella.
        analogWrite(ledFadePin, brightnessVal);
    
        brightnessVal += fadeVal;     // Muutetaan brightnessVal arvoa
    
        // Tarkastetaan onko jompikumpi reunaehdoista saavutettu
        if ((brightnessVal <= 0) || (brightnessVal >= 255)) {
            fadeVal = -fadeVal;       // Muutetaan fadeVal etumerkki
        } 
    
        delay(20);                    // Odotetaan 20 ms
    }
    
  8. Lataa ohjelma kehitysalustalle

    Ohjelman lataaminen
    Ohjelman lataaminen

  9. Arduino IDE:n konsoliin tulisi tulla näkyviin viimeiselle riville upload complete. Tämän jälkeen kehitysalustaan kytketyn ledin tulisi vilkkua sekunnin välein.

    Testaa

    Kokeile muuttaa viivettä delay? Miten saat "hengityksen" hidastumaan esim. 5 sekunttiin?

    Vastaus

    Muuttamalla viiveen 100 ms delay(100).

Virhetilanteita

Yleisimipiä virhetilanteita

Virhetilanne

Laitevalinnasta ei ole mahdollista valita LilyPad Arduino USB

  • Tarkista sisäänrakennetun latauskytkimen asento CHG/ON -> ON
  • Tarkista USB-kaapeli, jos ongelma jatkuu kokeile toisella USB-kaapelilla.

Virhetilanne

Upload error: Failed uploading: no upload port provided

  • Tarkista, että yläpalkista on valittuna LilyPad Arduino USB
  • Tarkista sisäänrakennetun latauskytkimen asento CHG/ON -> ON
  • Tarkista USB-kaapeli, jos ongelma jatkuu kokeile toisella USB-kaapelilla.

Virhetilanne

Ledin kirkkaus ei muutu / Led ei syty

  • Tarkista latautuiko koodi onnistuneesti -> upload complete
  • Tarkista ledin kytkentä ja varmista, että + ja - johtimet on kytketty ohjekuvan mukaisesti.
Takaisin ylös