Stwórz skaner LED Knight Rider z Arduino

  • Michael Cain
  • 0
  • 2302
  • 377
Reklama

Czy kiedykolwiek chciałeś mieć własny samochód Knight Industries Two Thousand (KITT) - wiesz, od Knight Rider? Zrób swoje marzenie o krok bliżej rzeczywistości, budując skaner LED! Oto wynik końcowy:

Czego potrzebujesz

Ten projekt nie wymaga wielu części i możesz mieć ich już wiele:

  • 1 x Arduino UNO lub podobny
  • 1 x deska do krojenia chleba
  • 8 x czerwone diody LED
  • Rezystory 8 x 220 omów
  • 1 x potencjometr 10 kΩ
  • Przewody przyłączeniowe męskie do męskich

Jeśli masz zestaw startowy Arduino Co zawiera zestaw startowy Arduino? [MakeUseOf wyjaśnia] Co zawiera pakiet startowy Arduino? [MakeUseOf wyjaśnia] Wcześniej wprowadziłem tutaj sprzęt Open Source Arduino na MakeUseOf, ale potrzebujesz czegoś więcej niż samego Arduino, aby coś z niego zbudować i zacząć. „Zestawy startowe” Arduino to… prawdopodobnie masz wszystkie te części (co możesz zrobić z zestawem startowym? 5 unikalnych projektów Arduino dla początkujących, które możesz zrobić za pomocą zestawu startowego 5 unikalnych projektów Arduino dla początkujących, które możesz zrobić za pomocą zestaw startowy).

Prawie każde Arduino będzie działać, pod warunkiem, że ma osiem dostępnych pinów (Nigdy nie używał Arduino? Rozpocznij tutaj Rozpoczęcie pracy z Arduino: Przewodnik dla początkujących Rozpoczęcie pracy z Arduino: Przewodnik dla początkujących Arduino to platforma prototypowania elektroniki typu open source oparta na elastycznej , łatwy w obsłudze sprzęt i oprogramowanie. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk). Możesz użyć Shift Register Programowanie Arduino - Gra z rejestrami Shift (np. Jeszcze więcej diod LED) Programowanie Arduino - Gra z rejestrami Shift (np. Jeszcze więcej diod LED) Dzisiaj postaram się nauczyć Cię trochę o rejestrach Shift. Są to dość istotna część programowania Arduino, głównie dlatego, że zwiększają liczbę wyjść, których można użyć, w zamian za ... sterowanie diodami LED, chociaż nie jest to potrzebne w tym projekcie, ponieważ Arduino ma wystarczającą liczbę pinów.

Plan kompilacji


To bardzo prosty projekt. Z uwagi na dużą liczbę drutów może to wyglądać na skomplikowane, ale każda część jest bardzo prosta. Każda dioda elektroluminescencyjna (LED) jest podłączona do własnego styku Arduino. Oznacza to, że każdą diodę LED można indywidualnie włączać i wyłączać. Potencjometr jest podłączony do analogu Arduino w pinach, które zostaną wykorzystane do regulacji prędkości skanera.

Obwód


Podłącz lewy zewnętrzny pin (patrząc z przodu, z pinami na dole) potencjometru do uziemienia. Podłącz przeciwny pin zewnętrzny do + 5 V. Jeśli to nie działa poprawnie, odwróć te piny. Podłącz środkowy pin do analogu Arduino w 2.

Podłącz anodę (długą nogę) każdej diody LED do pinów cyfrowych od jednego do ośmiu. Podłącz katody (krótka noga) do uziemienia Arduino.

Kod

Utwórz nowy szkic i zapisz go jako “knightRider”. Oto kod:

const int leds [] = 1,2,3,4,5,6,7,8; // Diody led const int totalLeds = 8; czas int = 50; // Domyślna prędkość void setup () // Zainicjuj wszystkie wyjścia dla (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i  0; --i) // Skanuj od prawej do lewej czas = analogRead (2); digitalWrite (diody LED [i], WYSOKA); Czas zwłoki); digitalWrite (diody LED [i - 1], WYSOKA); Czas zwłoki); digitalWrite (diody LED [i], LOW); 

Rozbijmy to. Każdy pin LED jest przechowywany w tablicy:

const int leds [] = 1,2,3,4,5,6,7,8;

Tablica jest zasadniczo zbiorem powiązanych elementów. Te elementy są zdefiniowane jako stałe (“const”), co oznacza, że ​​nie można ich później zmienić. Nie musisz używać stałej (kod będzie działał idealnie, jeśli go usuniesz “const”), chociaż jest to zalecane.

Dostęp do elementów tablicy można uzyskać za pomocą nawiasów kwadratowych (“[]”) i liczba całkowita zwana indeksem. Indeksy zaczynają się od zera, więc “diody led [2]” zwróciłby trzeci element w tablicy - pin 3. Tablice przyspieszają pisanie kodu i są łatwiejsze do odczytania, co sprawia, że ​​komputer wykonuje ciężką pracę!

Pętla for służy do ustawienia każdego pinu jako wyjścia:

dla (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT); 

Ten kod jest wewnątrz “Ustawiać()” funkcja, ponieważ wystarczy uruchomić tylko raz na początku programu. Pętle są bardzo przydatne. Pozwalają na ciągłe uruchamianie tego samego kodu, za każdym razem o innej wartości. Są idealne do pracy z tablicami. Liczba całkowita “ja” jest deklarowany i tylko kod wewnątrz pętli może uzyskać dostęp do tej zmiennej (jest to znane jako “zakres”). Wartość i zaczyna się od zera, a dla każdej iteracji pętli i jest zwiększana o jeden. Gdy wartość i jest mniejsza lub równa “totalLeds” zmienna, pętla “przerwy” (przystanki).

Wartość i służy do uzyskania dostępu do “diody led” szyk. Pętla uzyskuje dostęp do każdego elementu w tablicy i konfiguruje go jako dane wyjściowe. Możesz wpisać ręcznie “pinMode (pin, WYJŚCIE)” osiem razy, ale po co pisać osiem linii, skoro można napisać trzy?

Podczas gdy niektóre języki programowania mogą powiedzieć, ile elementów jest w tablicy (zwykle ze składnią taką jak array.length), Arduino nie czyni tego tak prostym (wymaga nieco więcej matematyki). Ponieważ liczba elementów w tablicy jest już znana, nie stanowi to problemu.

Wewnątrz głównej pętli (void loop ()) są jeszcze dwa dla pętli. Pierwszy włącza diody LED, a następnie wyłącza od 1 do 8. Druga pętla włącza diody LED, a następnie wyłącza od 8 do 1. Zauważ, jak ustawiony jest aktualny pin, a także aktualny pin plus jeden. Dzięki temu zawsze świecą dwie diody LED jednocześnie, dzięki czemu skaner wygląda bardziej realistycznie.

Na początku każdej pętli wartość puli jest odczytywana do “czas” zmienna:

time = analogRead (2);

Odbywa się to dwukrotnie, raz w każdej pętli. To musi być stale sprawdzane i aktualizowane. Gdyby to było poza pętlami, nadal by działało, jednak byłoby małe opóźnienie - działałoby tylko po zakończeniu wykonywania pętli. Doniczki są analogowe, dlatego dlaczego “analogRead (pin)” jest używany. Zwraca wartości od zera (minimum) do 1023 (maksimum). Arduino jest w stanie przekonwertować te wartości na coś bardziej użytecznego, jednak są one idealne dla tego przypadku użycia.

Opóźnienie między zmianą diod LED (lub prędkością skanera) jest ustawiane w milisekundach (1/1000 sekundy), więc maksymalny czas wynosi nieco ponad 1 sekundę.

Zaawansowany skaner

Teraz, kiedy znasz podstawy, spójrzmy na coś bardziej złożonego. Ten skaner zapali diody LED w parach, zaczynając od zewnątrz i pracując w. Następnie odwróci to i przejdzie od wewnątrz do par zewnętrznych. Oto kod:

const int leds [] = 1,2,3,4,5,6,7,8; // Diody led const int totalLeds = 8; const int halfLeds = 4; czas int = 50; // Domyślna prędkość void setup () // Zainicjuj wszystkie wyjścia dla (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i <(halfLeds - 1); ++i)  // Scan outside pairs in time = analogRead(2); digitalWrite(leds[i], HIGH); digitalWrite(leds[(totalLeds - i) - 1], HIGH); delay(time); digitalWrite(leds[i], LOW); digitalWrite(leds[(totalLeds - i) - 1], LOW); delay(time);  for(int i = (halfLeds - 1); i> 0; --i) // Skanuj wewnątrz paruje czas = analogRead (2); digitalWrite (diody LED [i], WYSOKA); digitalWrite (leds [(totalLeds - i) - 1], HIGH); Czas zwłoki); digitalWrite (diody LED [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], LOW); Czas zwłoki); 

Ten kod jest nieco bardziej złożony. Zauważ, jak obie pętle idą od zera do “halfLeds - 1” (3). To sprawia, że ​​lepszy skaner. Gdyby obie pętle przeszły od 4 - 0 i 0 - 4, wtedy te same diody LED migałyby dwukrotnie w tej samej sekwencji - nie wyglądałoby to zbyt dobrze.

Powinieneś teraz posiadać działający skaner LED Knight Rider! Łatwo byłoby to zmodyfikować, aby użyć większej lub większej liczby diod LED lub zastosować własny wzór. Ten obwód jest bardzo łatwy do przeniesienia na Raspberry Pi (nowość w Pi? Zacznij tutaj Raspberry Pi: Nieoficjalny samouczek Raspberry Pi: Nieoficjalny samouczek Czy jesteś obecnym właścicielem Pi, który chce dowiedzieć się więcej, czy potencjalnym właścicielem tego kredytu - urządzenie wielkości karty, nie jest to przewodnik, którego nie chcesz przegapić.) lub ESP8266 Poznaj Arduino Killer: ESP8266 Poznaj Arduino Killer: ESP8266 Co jeśli powiem ci, że jest płyta deweloperska kompatybilna z Arduino z wbudowanym Wi- Fi za mniej niż 10 USD? Cóż, jest. .

Budujesz replikę KITT? Chciałbym zobaczyć wszystkie komentarze Knight Rider.




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.