Lekcja 98-5: Wygaszanie światła po naciśnięciu przycisku za pomocą Arduino
W tej lekcji zbudujesz światło, które ściemnia się na polecenie: naciśnij przycisk, a dioda LED zaczyna świecić z pełną jasnością, a następnie płynnie przygasa do zera. To jeden z najbardziej przydatnych wzorców dla początkujących w Arduino, ponieważ łączy wejście cyfrowe (przycisk) z wyjściem analogowym PWM (jasność diody LED) i uczy, jak kontrolować tempo i płynność zmiany, a nie tylko włączać i wyłączać coś.
Ściemnianie na żądanie pojawia się wszędzie w prawdziwych produktach. Oto kilka praktycznych sposobów wykorzystania tego, czego się tutaj nauczysz:
- Łagodne wyłączanie lampek wskaźnikowych — zamiast gwałtownego wyłączenia lampki, przy naciśnięciu przycisku przygasa ona delikatnie, co wygląda znacznie bardziej elegancko w urządzeniach i obudowach drukowanych w 3D.
- Tryb uśpienia / czuwania — naciśnij przycisk, a jasna dioda LED statusu przygasa do czerni, aby nie przeszkadzać Ci w nocy, podczas gdy układ pozostaje zasilany.
- Oświetlenie sceniczne lub modelarskie typu „fade to black” — jedno naciśnięcie przycisku wyzwala płynne ściemnianie taśmy lub panelu LED zamiast nagłego wyłączenia.
- Oszczędzanie baterii dzięki informacji zwrotnej — chwilowe naciśnięcie przycisku daje jasny błysk potwierdzenia, który zanika, więc dioda LED świeci z pełną mocą tylko przez krótki czas.
- Sztuka interaktywna i rekwizyty — efekt „wydechu” wyzwalany dotykiem, idealny do cosplayu, dioram lub ekspozycji muzealnych.
Główna idea jest prosta: przycisk mówi Arduino „zacznij teraz ściemniać”, a Arduino obniża jasność diody LED od 255 (pełna) do 0 (wyłączona) w małych krokach. Ponieważ kroki są małe i następują szybko, Twoje oko widzi płynne ściemnianie, a nie skok.
Jeśli nigdy wcześniej nie ściemniałeś diody LED, podstawy sterowania jasnością są omówione w Lekcji 98-4: Ściemnianie światła LED za pomocą Arduino: Sterowanie jasnością. Ta lekcja bazuje bezpośrednio na tym fundamentcie, dodając przycisk jako wyzwalacz.
Sprzęt i komponenty
To bardzo tania konstrukcja — wszystko tutaj to standardowe materiały z zestawu startowego:
- Płytka Arduino (Uno, Nano, Mega lub dowolna kompatybilna)
- Jedna dioda LED (5 mm lub 3 mm, dowolny kolor)
- Jeden przycisk chwilowy (dobrze sprawdza się 4-pinowy typu tact)
- Jeden rezystor do diody LED — od 200 Ω do 1000 Ω (klasyczne 220 Ω lub 330 Ω jest idealne)
- Płytka stykowa i przewody połączeniowe DuPont
- Kabel USB do programowania (oraz bateria lub zasilacz 5 V, jeśli chcesz, aby działało bezprzewodowo)
Krótka uwaga o rezystorze do diody LED: dioda LED potrzebuje około 2 V napięcia i około 10 mA prądu. Przy zasilaniu 5 V rezystor musi obniżyć pozostałe 3 V, więc prawo Ohma daje około 300 Ω. Wszystko od 300 Ω do 1000 Ω będzie działać — wyższe wartości po prostu powodują, że dioda LED świeci słabiej. Użycie rezystora nie jest opcjonalne; bez niego dioda LED pobierze znacznie za duży prąd i spali się.
Przewodnik po połączeniach
Okablowanie jest celowo minimalne. Anoda diody LED (dłuższa nóżka) łączy się przez rezystor z pinem cyfrowym 3, a jej katoda (krótsza nóżka, z płaską stroną na obudowie) idzie do masy. Przycisk łączy się między pinem cyfrowym 2 a masą — zewnętrzny rezystor podciągający nie jest potrzebny, ponieważ kod włącza wewnętrzny pull-up Arduino.
Zwróć uwagę na polaryzację diody LED: płaska strona plastikowej obudowy i krótsza nóżka oznaczają katodę (minus). Jeśli włożysz ją odwrotnie, dioda LED po prostu się nie zaświeci — nie spowoduje to uszkodzenia, wystarczy ją obrócić.
W przypadku przycisku, jeśli używasz 4-pinowego przełącznika tact, pamiętaj, że piny są wewnętrznie połączone w pary: dwa z czterech pinów są zawsze połączone razem. Użyj multimetru w trybie ciągłości, aby znaleźć parę, która wydaje sygnał dźwiękowy po naciśnięciu, a następnie użyj jednego pinu z każdej strony. Jedna strona idzie do pinu 2, druga do masy.
Wyjaśnienie kodu
Szkic jest krótki, a prawie wszystko, co możesz chcieć zmienić, znajduje się w kilku linijkach na górze. Oto konfigurowalne przez użytkownika części:
const int pushButtonPin = 2;//pin, do którego podłączony jest przycisk
const int LEDPin = 3;//pin, do którego podłączona jest dioda LED
const int fadeAmount = 10; // o ile punktów przygaszać diodę LED
const int fadeSpeed = 5;//czas przygaszania w milisekundach. im mniejsza wartość, tym szybsze przygaszanie
pushButtonPin i LEDPin po prostu informują Arduino, do których pinów podłączyłeś elementy. Jeśli przeniesiesz przycisk na pin 4 lub diodę LED na pin 9 (pin obsługujący PWM), wystarczy zmienić te dwie liczby, aby odpowiadały Twojemu połączeniu. Pamiętaj, że pin diody LED musi obsługiwać PWM — w przypadku Uno oznacza to piny 3, 5, 6, 9, 10 lub 11 — ponieważ przygaszanie wymaga analogWrite().
fadeAmount kontroluje, jak duży jest każdy krok jasności. Jasność mieści się w zakresie od 0 do 255, więc fadeAmount równy 10 oznacza, że dioda LED przygasa w około 25 krokach. Większa liczba sprawia, że przygaszanie jest bardziej skokowe i szybsze; mniejsza liczba sprawia, że jest płynniejsze i wolniejsze.
fadeSpeed to opóźnienie w milisekundach między każdym krokiem. To pojedynczy, najważniejszy parametr decydujący o tym, jak efekt jest odczuwany. Wartość 5 ms daje szybkie, energiczne przygaszanie; wartość 30 ms lub więcej daje powolne, dostojne ściemnianie. W połączeniu z fadeAmount te dwie wartości pozwalają dostroić przygaszanie dokładnie do charakteru, jaki chcesz uzyskać.
Warto też znać jedną zmienną wewnętrzną:
int brightness = 255; // jak jasna jest dioda LED
int pushButtonStatus = 0; // wartość odczytana z pinu 2
brightness zaczyna od 255, co oznacza, że dioda LED za każdym naciśnięciem przycisku startuje z pełną jasnością. Jeśli chcesz, aby przygaszanie zaczynało się od ciemniejszego punktu — powiedzmy, połowy jasności — zmień tę wartość na 128.
Sama logika działa tak: pętla odczytuje stan przycisku. Jeśli jest wciśnięty (LOW, z powodu wewnętrznego rezystora podciągającego), pętla while wykonuje się tak długo, jak długo jasność jest większa od zera. Wewnątrz tej pętli Arduino zapisuje bieżącą jasność do diody LED, odejmuje fadeAmount, czeka fadeSpeed milisekund i powtarza. Gdy przycisk nie jest wciśnięty, do diody LED zapisywane jest po prostu 0 i pozostaje wyłączona.
Jeden ważny szczegół: wewnętrzny rezystor podciągający sprawia, że pin odczytuje HIGH, gdy przycisk nie jest wciśnięty, a LOW, gdy jest wciśnięty. Dlatego kod sprawdza LOW, aby wykryć naciśnięcie. Gdybyś kiedykolwiek zmienił układ na zewnętrzny rezystor podciągający do masy, musiałbyś zmienić to porównanie na HIGH.
Działający projekt i demonstracja
Po wgraniu działanie jest natychmiastowe i satysfakcjonujące. Naciśnij przycisk, a dioda LED przeskoczy do pełnej jasności, po czym widocznie przygaśnie do zera w czasie, który kontrolujesz. Puść przycisk, a dioda LED zgaśnie; naciśnij ponownie, a przygaszanie rozpocznie się od nowa od pełnej jasności.
Na filmie przygaszanie jest pokazane przy kilku ustawieniach, abyś mógł usłyszeć i zobaczyć różnicę. Przy fadeAmount = 20 przygaszanie jest szybkie i skokowe — osiąga zero w kilku widocznych krokach. Zmniejszenie do fadeAmount = 10 znacznie je wygładza, a ustawienie fadeAmount = 3 sprawia, że przygaszanie trwa zauważalnie dłużej i wygląda niemal ciągle. Wartość fadeSpeed ma równie dramatyczny wpływ: ustawienie jej na 1 ms sprawia, że przygaszanie jest niemal natychmiastowe, a większe wartości je wydłużają.
Spróbuj tego eksperymentu: ustaw fadeAmount = 5 i fadeSpeed = 30. Otrzymasz powolne, łagodne ściemnianie, które wygląda jak światło zasypiające. Następnie ustaw fadeAmount = 50 i fadeSpeed = 1, aby uzyskać ostre, szybkie wyłączenie. Żadne z nich nie jest „błędne” — chodzi wyłącznie o nastrój, jaki chcesz uzyskać.
Przełączające działanie tego samego przycisku opisano osobno w Lekcja 98-3: Jak włączać/wyłączać diodę LED typu toggle za pomocą przycisku z Arduino, a prostsza wersja „naciśnij, aby zaświecić” znajduje się w Lekcja 98-2: Jak włączać i wyłączać diodę LED za pomocą przycisku z Arduino.
Ponieważ przygaszanie jest wyzwalane chwilowym zwarciem, ten sam układ doskonale nadaje się do sterowania przekaźnikiem lub tranzystorem MOSFET zamiast diody LED — mógłbyś przygaszać lampę 12 V, łagodny start silnika albo rozgrzewanie elementu grzejnego. Przycisk jest tylko wyzwalaczem; to, co przygaszasz, zależy od Ciebie.
Powiązane projekty z tego filmu
- Lekcja 98-1: Jak włączać i wyłączać diodę LED za pomocą Arduino
- Lekcja 98-2: Jak włączać i wyłączać diodę LED za pomocą przycisku z Arduino
- Lekcja 98-3: Jak włączać/wyłączać diodę LED typu toggle za pomocą przycisku z Arduino
- Lekcja 98-4: Przygaszanie diody LED za pomocą Arduino: sterowanie jasnością
- Lekcja 98-6: Gra w diody LED na huśtawce z Arduino
- Lekcja 98-7: Wędrujące światło za pomocą Arduino i 5 diod LED
- Lekcja 98-8: Wędrujące światło z przyciskiem i diodami LED z Arduino
- Lekcja 98-9: Miernik poziomu napięcia diod LED za pomocą Arduino lub wędrujące światło z potencjometrem
- Lekcja 98-10: Sygnalizacja świetlna na Arduino
Rozdziały
- [00:00] Przegląd 10 projektów z diodami LED
- [01:00] Wprowadzenie do kursu Arduino krok po kroku
- [02:29] Podstawy diod LED: symbole, polaryzacja i prąd
- [03:49] Obliczanie rezystora dla diody LED za pomocą prawa Ohma
- [05:53] Projekt 1: Włączanie i wyłączanie diody LED
- [12:43] Projekt 2: Dioda LED z przyciskiem
- [17:13] Projekt 3: Przełączanie diody LED przyciskiem
- [20:12] Projekt 4: Ściemnianie diody LED
- [23:20] Projekt 5: Ściemnianie diody LED za pomocą przycisku
- [27:32] Projekt 6: Dioda LED na huśtawce
- [30:47] Projekt 7: Wędrujące światło
- [36:41] Projekt 8: Wędrujące światło z przyciskiem
- [42:25] Projekt 9: Miernik poziomu napięcia z diodami LED
- [49:25] Projekt 10: Sygnalizacja świetlna na Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Rzeczy, których możesz potrzebować
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Zasoby i odniesienia
-
DokumentacjaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
Pliki📁
Biblioteki Arduino (zip)
-
Kod źródłowy zestawu edukacyjnego inteligentnego samochodu SunFounder 3-w-1
3in1-kit-main-v2.zip12.80 MB
Instrukcja obsługi
-
Instrukcja montażu SunFounder 3-in-1 Arduino Smart CarTen dokument pokazuje krok po kroku montaż SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB