Szukaj kodu

Lekcja 98-7: Chodzące światło z użyciem Arduino i 5 diod LED

Lekcja 98-7: Chodzące światło z użyciem Arduino i 5 diod LED

Światło wędrujące (nazywane również światłem „biegnącym" lub „Knight Rider") to jeden z klasycznych projektów dla początkujących z Arduino — i to nie bez powodu. Uczy, jak sterować wieloma wyjściami w sekwencji, jak odmierzac czas zdarzeń i jak myśleć o rezystorach ograniczających prąd, a wszystko to podczas tworzenia czegoś wizualnie satysfakcjonującego. W tym projekcie podłączysz pięć diod LED do Arduino i zaprogramujesz je tak, aby każda z nich zapalała się po kolei, tworząc iluzję pojedynczego światła „wędrującego" wzdłuż rzędu.

5 leds on breadboard with resistor shown connected to Arduino UNO
5 diod LED na płytce stykowej z rezystorem podłączonym do Arduino UNO

Gdy zrozumiesz ten wzorzec, możesz go wykorzystać w zaskakująco wielu rzeczywistych konstrukcjach:

  • Oświetlenie dekoracyjne: biegnąca obwódka półki, ramki na zdjęcia lub modelu.
  • Wskaźniki kierunku: sekwencyjny efekt kierunkowskazu dla pojazdu rekwizytowego lub roweru elektrycznego.
  • Wyświetlacz postępu lub statusu: rząd diod LED, który przesuwa się w miarę postępu procesu.
  • Rekwizyty do gier i tablic wyników: „ruchomy cel" lub wskaźnik poziomu.
  • Pomoc dydaktyczna: najczystsza możliwa demonstracja wyjść cyfrowych i synchronizacji czasowej.

Ten sam układ pięciu diod LED jest ponownie wykorzystywany w kilku innych projektach w tym kursie, więc sprzęt, który tu zbudujesz, staje się platformą wielokrotnego użytku.

Jak działa światło wędrujące

Zasada jest dokładnie taka sama jak przy włączaniu pojedynczej diody LED — jest po prostu powtórzona pięć razy (w filmie o 30:47). Każda dioda LED jest podłączona do własnego pinu Arduino przez własny rezystor ograniczający prąd, a wszystkie rezystory łączą się ze wspólną szyną masy. Szkic następnie ustawia jeden pin na HIGH, czeka, ustawia go na LOW, czeka i przechodzi do następnego pinu. Ponieważ w danym momencie świeci się tylko jedna dioda LED, oko odczytuje tę sekwencję jako ruch.

Dwie wartości czasowe nadają temu efektowi jego charakter. Czas włączenia kontroluje, jak długo każda dioda LED pozostaje zapalona, a czas wyłączenia kontroluje przerwę przed zapaleniem się następnej diody. Krótki czas włączenia z długim czasem wyłączenia daje pojedynczą kropkę poruszającą się szybko; długi czas włączenia z krótkim czasem wyłączenia daje płynniejszy, bardziej ciągły przesuw (w filmie o 35:00).

Sprzęt i komponenty

  • 1 × płytka Arduino (Uno, Nano lub podobna)
  • 5 × diod LED (dowolny kolor; mieszanie kolorów ułatwia odczytanie efektu)
  • 5 × rezystorów — dobrze sprawdzają się wartości od 300 Ω do 1 kΩ
  • 1 × płytka stykowa
  • Przewody połączeniowe
  • Kabel USB lub bateria do zasilania

Jeśli później chcesz dodać wariant z przyciskiem, będziesz potrzebować także jednego chwilowego przycisku i dwóch dodatkowych przewodów połączeniowych.

Wybór wartości rezystora

Dioda LED ma napięcie przewodzenia około 2 V i potrzebuje około 10 mA do pełnej jasności (w filmie o 03:49). Przy zasilaniu 5 V rezystor musi obniżyć pozostałe 3 V. Stosując prawo Ohma, R = V / I = 3 V / 0,01 A = 300 Ω. W praktyce zadziała wszystko od 300 Ω do około 1 kΩ — im większy opór, tym ciemniejsza dioda LED, ale tym bezpieczniejszy i wydajniejszy układ (w filmie o 05:33).

Schematic for Arduino walking light LEDs with push button
Schemat świateł wędrujących LED Arduino z przyciskiem

Przewodnik po połączeniach

wiring of 5 LED on Arduino
połączenia 5 diod LED z Arduino

Włóż pięć diod LED do płytki stykowej anodami (dłuższą nóżką) skierowanymi w tym samym kierunku. Podłącz każdą katodę (krótszą, płaską nóżkę) do własnego rezystora, a drugi koniec wszystkich pięciu rezystorów połącz ze wspólną szyną masy. Następnie poprowadź przewód od każdej anody do pinu Arduino.

W tej konstrukcji diody LED są przypisane do pinów 3, 4, 5, 6 i 7 (w filmie o 31:29). Numery pinów są zdefiniowane na początku szkicu, więc jeśli wolisz inny układ, wystarczy zmienić te pięć linii.

Objaśnienie kodu

Szkic jest celowo prosty, aby początkujący mógł prześledzić każdą linię. Tylko blok na samym początku wymaga edycji pod własną konfigurację.

const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30;  // the time each LED waits in the OFF state
int onTime = 100;  // the time each LED is ON

Definicje pinów. Pięć linii const int przypisuje każdą diodę LED do fizycznego pinu Arduino. Ponieważ są zadeklarowane jako const, wartości nie mogą być zmienione później w programie — to nawyk bezpieczeństwa, który zapobiega przypadkowemu przypisaniu. Jeśli podłączysz diody LED do innych pinów, zmień tutaj tylko te numery.

onTime i offTime. Te dwie liczby całkowite to jedyne zmienne „zachowania" w projekcie i to właśnie z nimi będziesz chciał eksperymentować:

  • onTime — jak długo (w milisekundach) każda dioda LED pozostaje zapalona. Większe wartości sprawiają, że każdy krok wydaje się wolniejszy i bardziej zdecydowany.
  • offTime — przerwa po wyłączeniu diody LED, zanim zapali się następna. Mniejsze wartości sprawiają, że światło przemieszcza się szybciej.

Wypróbuj onTime = 200 i offTime = 200, aby uzyskać równomierny bieg ze średnią prędkością, lub onTime = 30 i offTime = 30, aby uzyskać bardzo szybki, niemal rozmyty efekt (w filmie o 36:06).

Funkcja setup() uruchamia się raz i po prostu ustawia wszystkie pięć pinów w tryb OUTPUT. Następnie funkcja loop() powtarza ten sam czterostopniowy wzorzec dla każdej diody LED: ustaw pin na HIGH, odczekaj onTime, ustaw go na LOW, odczekaj offTime. Gdy piąta dioda LED zakończy cykl, pętla rozpoczyna się od nowa od pierwszej, tworząc nieskończony ruch.

Działający projekt i demonstracja

Przy domyślnych wartościach diody LED przesuwają się wzdłuż rzędu w spokojnym tempie. Wgranie szkicu z onTime i offTime ustawionymi na 200 ms daje równomierny, stały marsz; zmniejszenie obu do 30 ms sprawia, że światło przebiega wzdłuż rzędu niemal zbyt szybko, by je śledzić (w filmie o 36:21).

Dwa przydatne eksperymenty do wypróbowania, gdy wszystko zacznie działać:

  • Ustaw czas włączenia krótszy niż czas wyłączenia, aby uzyskać wyraźnie wędrujący punkt.
  • Ustaw czas włączenia dłuższy niż czas wyłączenia, aby uzyskać miękką, nakładającą się poświatę.

To samo okablowanie pięciu diod LED jest ponownie wykorzystane w następnym projekcie, w którym przycisk przesuwa światło o jeden krok na raz. Ten projekt opisano w Lekcja 98-8: Wędrujące światło z przyciskiem i diodami LED z Arduino.

Jeśli wolisz sterować rzędem diod z wejścia analogowego zamiast z przycisku, zobacz Lekcja 98-9: Miernik poziomu napięcia LED z Arduino lub wędrujące światło z potencjometrem.

Idąc dalej

Gdy podstawowy ruch zacznie działać, naturalnym następnym krokiem jest sprawienie, aby światło odbijało się tam i z powrotem, zamiast przeskakiwać z ostatniej diody LED do pierwszej. To ćwiczenie czysto programistyczne — bez dodatkowego sprzętu — i dobry sposób na przećwiczenie pętli oraz tablic. Możesz także połączyć ten projekt z wersją z przyciskiem, aby zbudować ręcznie sterowany wyświetlacz.

Powiązane projekty z tego filmu

Rozdziały

  • [00:00] Przegląd dziesięciu projektów z diodami LED
  • [01:22] Wprowadzenie do kursu krok po kroku z Arduino
  • [02:29] Czym jest dioda LED i jak rozpoznać jej piny
  • [03:49] Obliczanie rezystora ograniczającego prąd
  • [30:47] Wprowadzenie do projektu wędrującego światła
  • [31:06] Schemat połączeń dla pięciu diod LED
  • [32:52] Omówienie kodu wędrującego światła
  • [34:39] Demonstracja i zmiana wartości czasowych
  • [36:41] Przesuwanie światła przyciskiem (osobny samouczek)
  • [42:25] Pasek napięcia LED z potencjometrem (osobny samouczek)
  • [49:25] Sygnalizacja świetlna z Arduino (osobny samouczek)

Obrazy

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
5 diod LED na płytce stykowej z rezystorem podłączonych do Arduino UNO
5 diod LED na płytce stykowej z rezystorem podłączonych do Arduino UNO
939-Lessson 98-LED-7: Arduino code walking LED light
Język: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Pliki📁

Biblioteki Arduino (zip)

Instrukcja obsługi