Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Seuraavat vaiheet ovat kokeiluja valaisimien toiminnan havainnollistamiseksi. Ne havainnollistavat LED -valon himmentämistä tasaisella nopeudella ja sen himmentämistä ja sammuttamista.
Tarvitset:
- Arduino (käytin duoa)
- Leipälauta
- 5 mm punainen LED
- 330 Ω vastus (ei kriittinen 330-560 Ω toimii.)
- 22 Gauge Solid Hookup Wire
Näihin kokeisiin tarvittavat osat sisältyvät kaikkiin Arduinon käynnistyspaketteihin.
Vaihe 1: Pulssimodulaatio selitetty
LEDit toimivat aina samalla jännitteellä kirkkaudesta riippumatta. Kirkkaus määräytyy neliöaalto -oskillaattorin avulla ja aika, jonka jännite on korkea, määrää kirkkauden. Tätä kutsutaan pulssinleveysmodulaatioksi (PWM). Tätä ohjaa Arduino analogWrite (pin, n) -toiminto, jossa n: n arvo on 0 - 255. AnalogWrite () antaa PWM: n, ei todellisen analogian. Jos n = 2, LED on kaksi kertaa kirkkaampi kuin n = 1. Kirkkaus kaksinkertaistuu aina, kun n kaksinkertaistuu. Joten n = 255 on kaksi kertaa kirkkaampi kuin n = 128.
N: n arvo ilmaistaan usein prosentteina, jota kutsutaan käyttöjaksoksi. Kuvissa on oskilloskoopin jälkiä 25, 50 ja 75% käyttöjaksoille.
Vaihe 2: Tasainen himmennys
Rakenna piiri kuten kaaviossa. Tämä on aivan kuin piiri, joka vilkkuu LEDiä. Se käyttää nasta 9, koska sinun on käytettävä PWM -yhteensopivaa nastaa.
Kopioi/liitä alla oleva luonnos Arduino IDE: hen ja suorita se.
Huomaat, että mitä kirkkaampi LED, sitä hitaammin se himmenee. Kun se lähestyy himmeintä, se himmenee erittäin nopeasti.
mitätön asennus ()
{pinMode (9, LÄHTÖ); } void loop () {int pin = 9; for (int i = 255; i> -1; i--) {analogWrite (nasta, i); viive (10); } for (int i = 0; i <256; i ++) {analogWrite (nasta, i); viive (10); }}
}
Seuraava vaihe näyttää kuinka himmentää LEDiä vakionopeudella ja yhdessä lausunnossa.
Vaihe 3: Ylös ja alas yhdellä ()
Jotta LED himmenee vakionopeudella, viiveen () on lisättävä eksponentiaalisesti, koska puolet käyttöjaksosta tuottaa aina puolet kirkkaudesta. Ensimmäinen ajatukseni oli yrittää käyttää map () -toimintoa, mutta se on lineaarinen.
Linja:
int d = (16-i/16)^2;
laskee kirkkauden käänteisen neliön viiveen pituuden määrittämiseksi.
Kopioi/liitä alla oleva luonnos Arduino IDE -laitteeseen ja näet, että LED -valo sammuu ja sammuu vakionopeudella.
mitätön asennus ()
{pinMode (9, LÄHTÖ); } void loop () {int x = 1; int nasta = 9; for (int i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; analogWrite (nasta, i); viive (d); jos (i == 255) x = -1; // vaihda suuntaa huipussa}}