Lekcja 98-4: Ściemnianie światła LED za pomocą Arduino: Kontrola jasności
Diody LED są wszędzie — wskaźniki, wyświetlacze, oświetlenie dekoracyjne — ale większość początkujących zatrzymuje się na prostym włączaniu i wyłączaniu. Ten projekt robi kolejny krok: płynne rozjaśnianie i ściemnianie diody LED przy użyciu wbudowanej funkcji PWM (modulacja szerokości impulsu) Arduino. Zamiast ostrym miganiem, otrzymujesz stopniowy wzrost i spadek jasności, który naśladuje naturalne ściemnianie, efekty oddychania i sterowanie przypominające analogowe z czysto cyfrowego pinu. To jeden z najbardziej satysfakcjonujących pierwszych projektów, ponieważ efekt widać natychmiast, a ta sama technika leży u podstaw sterowania prędkością silników, głośnością dźwięku i ściemnianiem podświetlenia w rzeczywistych produktach.
Gdy zrozumiesz ściemnianie, możesz je zastosować w szerokim zakresie praktycznych konstrukcji:
- Tworzenie wskaźnika statusu „oddychającego" w urządzeniu, który delikatnie pulsuje zamiast rozpraszająco migać
- Automatyczne ściemnianie lampki nocnej LED na podstawie światła otoczenia lub pory dnia
- Sterowanie jasnością podświetlenia wyświetlacza LCD lub OLED
- Budowanie oświetlenia nastrojowego lub lamp dekoracyjnych z płynnymi przejściami między poziomami jasności
- Symulowanie powolnego budzika ze wschodem słońca, który stopniowo rozjaśnia się, aby obudzić cię naturalnie
- Dodawanie sterowania prędkością małych silników DC lub wentylatorów (obowiązuje ta sama zasada PWM)
Ten samouczek jest częścią kursu Robojax Arduino Step-by-Step i obejmuje konkretnie Projekt 4 z 10: Ściemnianie diody LED za pomocą Arduino. Pełny program jest dostępny do pobrania pod artykułem.
Sprzęt i komponenty
Lista części do tego projektu jest minimalna — jeśli robiłeś już wcześniej cokolwiek z Arduino, prawdopodobnie masz już wszystko, czego potrzebujesz:
- 1× płytka Arduino (Uno, Nano, Mega lub dowolna kompatybilna płytka)
- 1× dioda LED (5 mm lub 3 mm, dowolny kolor)
- 1× rezystor (200Ω do 1000Ω — zakres od 300Ω do 1kΩ działa dobrze)
- Płytka stykowa i przewody połączeniowe DuPont
- Kabel USB do programowania i zasilania
Jedna ważna uwaga dotycząca diody LED: dłuższa nóżka to anoda (plus), a krótsza nóżka — lub strona z płaską krawędzią na plastikowej obudowie — to katoda (minus). Odwrotne podłączenie oznacza, że dioda LED po prostu się nie zaświeci, więc sprawdź dokładnie przed włączeniem zasilania.
Jeśli chodzi o wartość rezystora, transkrypcja przeprowadza obliczenia na (w filmie o 03:49): typowa dioda LED ma spadek około 2 V i potrzebuje około 10 mA prądu. Przy zasilaniu 5 V pozostałe 3 V musi zostać odłożone na rezystorze, co daje R = V/I = 3 V / 0,01 A = 300Ω. W praktyce wszystko od 300Ω do 1000Ω będzie działać — wyższe wartości po prostu dają ciemniejszą diodę LED. W przypadku ściemniania jest to właściwie w porządku, ponieważ i tak zmieniasz jasność.
Przewodnik po połączeniach
Połączenia są tak proste, jak to tylko możliwe. Anoda diody LED łączy się przez rezystor z pinem Arduino obsługującym PWM — w tym projekcie pin 3. Katoda łączy się z masą.
Dlaczego konkretnie pin 3? Ponieważ nie wszystkie piny Arduino obsługują PWM. Na większości płytek Arduino piny obsługujące PWM są oznaczone symbolem tyldy (~) — zazwyczaj piny 3, 5, 6, 9, 10 i 11 na Uno. Jeśli użyjesz pinu bez PWM, analogWrite() nie wytworzy zmiennego wyjścia; dioda LED będzie po prostu włączona lub wyłączona.
Podłącz obwód w następujący sposób:
- Włóż diodę LED do płytki stykowej, zwracając uwagę, która nóżka to anoda (dłuższa), a która to katoda (krótsza/płaska strona).
- Podłącz anodę diody LED do pinu 3 Arduino przez rezystor.
- Podłącz katodę diody LED do pinu GND Arduino.
- Podłącz Arduino do komputera przez USB.
Wyjaśnienie kodu
Szkic do tego projektu oparty jest na klasycznym przykładzie Arduino „Fade", z kilkoma modyfikacjami. Zamiast wyjaśniać każdą linię, skupmy się na częściach, które będziesz chciał dostosować do własnych eksperymentów.
Zmienne konfigurowane przez użytkownika
Na początku kodu trzy zmienne kontrolują całe zachowanie:
int led = 3; // the PWM pin the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 3; // how many points to fade the LED byled— Określa, do którego pinu podłączona jest dioda LED. Domyślnie jest to pin 3, ale można go zmienić na dowolny pin obsługujący PWM (oznaczony symbolem ~ na płytce). Jeśli przeniesiesz diodę LED do innego pinu, zaktualizuj tę wartość, aby była zgodna.brightness— Bieżący poziom jasności, od 0 (wyłączona) do 255 (pełna jasność). Kod ustawia ją początkowo na 0, ale można zacząć od dowolnej wartości w tym zakresie.fadeAmount— To najciekawsza zmienna do eksperymentowania. Określa, ile „kroków" jasności jest wykonywanych w każdym cyklu. Mała wartość, np. 3, daje powolne, stopniowe ściemnianie. Większa wartość, np. 20, sprawia, że dioda LED rozjaśnia się i ściemnia bardzo szybko. Transkrypcja demonstruje to w (wideo o 22:37) — zmiana z 5 na 20 drastycznie przyspiesza efekt.
Jak działa ściemnianie
Sedno ściemniania tkwi w dwóch liniach wewnątrz loop():
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
W każdym przejściu pętli bieżąca wartość jasności jest zapisywana do diody LED za pomocą analogWrite(), a następnie jasność jest zwiększana o fadeAmount. Funkcja analogWrite() wykorzystuje PWM do symulowania napięcia analogowego — szybko przełącza pin między stanem włączenia i wyłączenia, a stosunek czasu włączenia do czasu wyłączenia określa postrzeganą jasność.
Gdy jasność osiągnie 0 lub 255, kod odwraca kierunek, zmieniając znak fadeAmount:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
To właśnie sprawia, że dioda LED rozjaśnia się, potem ściemnia, a następnie znowu rozjaśnia — tworząc ciągły cykl oddychania. delay(30) na końcu pętli kontroluje ogólną szybkość animacji. Krótsze opóźnienie przyspiesza ściemnianie; dłuższe je spowalnia.
Eksperymentowanie z wartościami
Dwie zmienne dają największą kontrolę nad efektem wizualnym:
- Zwiększ
fadeAmount, aby uzyskać szybsze, bardziej dramatyczne ściemnianie. Wypróbuj 10 lub 20. - Zmniejsz
fadeAmount, aby uzyskać powolny, delikatny efekt oddychania. Wypróbuj 1 lub 2. - Dostosuj wartość
delay(), aby zmienić tempo. Mniejsze opóźnienia przyspieszają cały cykl; większe go wydłużają.
Połączenie małego fadeAmount z krótkim opóźnieniem daje niezwykle płynne, niemal organiczne ściemnianie — idealne do oświetlenia nastrojowego. Duży fadeAmount z krótkim opóźnieniem tworzy efekt szybkiego pulsowania.
Demonstracja projektu na żywo
Po wgraniu kodu zobaczysz, jak dioda LED powoli rozjaśnia się od stanu wyłączenia do pełnej jasności, a następnie przygasa, powtarzając to w nieskończoność. Transkrypcja pokazuje domyślne zachowanie w (wideo o 22:25) — płynne ściemnianie w umiarkowanym tempie.
Gdy fadeAmount zostanie zmienione na 20, dioda LED rozjaśnia się i ściemnia bardzo szybko — niemal jak migotanie. Gdy ustawione jest na 3, ściemnianie trwa zauważalnie dłużej, tworząc spokojne, stopniowe przejście. Jest to wyraźnie pokazane w wideo o (wideo o 23:02).
Piękno tego projektu polega na tym, że efekty zmian w kodzie widać natychmiast — nie trzeba zmieniać okablowania, wystarczy edytować zmienne i ponownie wgrać kod. Ta szybka pętla informacji zwrotnej czyni go doskonałym sposobem na budowanie intuicji dotyczącej tego, jak PWM i timing współdziałają.
Jeśli chcesz pójść dalej i wyzwalać ściemnianie przyciskiem zamiast pozwalać mu działać w sposób ciągły, jest to omówione w osobnym samouczku — zobacz sekcję powiązanych projektów poniżej.
Powiązane projekty z tego wideo
- 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-5: Ściemnianie światła po naciśnięciu przycisku za pomocą Arduino
- Lekcja 98-6: Gra w diody LED na zasadzie huśtawki z Arduino
- Lekcja 98-7: Światło wędrujące za pomocą Arduino i 5 diod LED
- Lekcja 98-8: Światło wędrujące z przyciskiem i diodami LED z Arduino
- Lekcja 98-9: Miernik poziomu napięcia LED za pomocą Arduino lub światło wędrujące z potencjometrem
- Lekcja 98-10: Sygnalizacja świetlna Arduino
Rozdziały
- [00:00] Przegląd 10 projektów LED z Arduino
- [01:22] Wprowadzenie do kursu i wymagane komponenty
- [02:29] Zrozumienie diod LED: symbole, polaryzacja i typy
- [03:49] Obliczanie wartości rezystora dla diody LED za pomocą prawa Ohma
- [05:53] Projekt 1: Włączanie i wyłączanie diody LED
- [12:43] Projekt 2: Sterowanie diodą LED za pomocą przycisku
- [17:13] Projekt 3: Przełączanie diody LED przyciskiem
- [20:12] Projekt 4: Ściemnianie diody LED — omówienie kodu
- [22:25] Demonstracja ściemniania i regulacja szybkości ściemniania
- [23:20] Projekt 5: Ściemnianie diody LED wyzwalane przyciskiem
- [27:32] Projekt 6: Efekt huśtawki LED
- [30:47] Projekt 7: Światło wędrujące z 5 diodami LED
- [36:41] Projekt 8: Światło wędrujące sterowane przyciskiem
- [42:25] Projekt 9: Miernik poziomu napięcia LED z potencjometrem
- [49:25] Projekt 10: Sygnalizacja świetlna 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