Reklama
Czy kiedykolwiek żałowałeś, że nie masz własnego samochodu 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]Wcześniej MakeUseOf przedstawiłem tutaj sprzęt open source Arduino, ale będziesz potrzebować czegoś więcej niż samego Arduino, aby coś z niego zbudować i zacząć. „Zestawy startowe” Arduino są ... Czytaj więcej prawdopodobnie masz wszystkie te części (co możesz zrobić z zestawem startowym? 5 unikatowych projektów Arduino dla początkujących, które możesz zrobić za pomocą zestawu startowego Czytaj więcej ).
Prawie każde Arduino będzie działać, pod warunkiem, że ma osiem dostępnych pinów (Czy nigdy wcześniej nie korzystałeś z Arduino?
Zacznij tutaj Pierwsze kroki z Arduino: przewodnik dla początkującychArduino to platforma prototypowania elektroniki typu open source oparta na elastycznym, łatwym w użyciu sprzęcie i oprogramowaniu. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk. Czytaj więcej ). Mógłbyś użyj Rejestru Shift Programowanie Arduino - zabawa z rejestrami Shift (np. Jeszcze więcej diod LED)Dzisiaj postaram się trochę nauczyć o rejestrach zmianowych. To dość ważna część programowania Arduino, głównie dlatego, że zwiększają liczbę wyjść, których można użyć w zamian za ... Czytaj więcej do sterowania 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 (diody LED [i], WYJŚCIE); } } 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 usuniesz „const”), chociaż jest to zalecane.
Dostęp do elementów tablicy można uzyskać za pomocą nawiasów kwadratowych („[]”) i liczby całkowitej zwanej indeksem. Indeksy zaczynają się od zera, więc „leds [2]” zwrócą trzeci element w tablicy - pin 3. Dzięki tablicom kod jest szybszy i łatwiejszy do odczytania, dzięki czemu 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 (diody LED [i], WYJŚCIE); }
Ten kod znajduje się w funkcji „setup ()”, ponieważ musi zostać uruchomiony tylko raz na początku programu. Pętle są bardzo przydatne. Pozwalają na ciągłe uruchamianie tego samego kodu, za każdym razem z inną wartością. Są idealne do pracy z tablicami. Deklarowana jest liczba całkowita „i”, a 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 zmiennej „totalLeds”, pętla „pęka” (zatrzymuje się).
Wartość i służy do uzyskania dostępu do tablicy „leds”. Pętla uzyskuje dostęp do każdego elementu w tablicy i konfiguruje go jako dane wyjściowe. Możesz ręcznie wpisać „pinMode (pin, OUTPUT)” osiem razy, ale po co pisać osiem linii, skoro możesz napisać trzy?
Podczas gdy niektóre języki programowania mogą powiedzieć ci, 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 gaśnie od 1 do 8. Druga pętla włącza i wyłącza diody LED od 8 do 1. Zauważ, jak ustawiony jest bieżący pin, a także ustawiony jest obecny 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 zmiennej „time”:
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 używane jest „analogRead (pin)”. 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 w tym przypadku.
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, gdy znasz podstawy, spójrzmy na coś bardziej złożonego. Ten skaner zapali diody LED parami, zaczynając od zewnątrz i pracując. 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 (diody LED [i], WYJŚCIE); } } void loop () {for (int i = 0; i 0; --i) {// Skanuj wewnątrz paruje czas out = 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 przechodzą od zera do „halfLeds - 1” (3). To sprawia, że lepszy skaner. Gdyby obie pętle przechodził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 do Raspberry Pi (nowy w Pi? Zacznij tutaj Raspberry Pi: The Unofficial TutorialNiezależnie od tego, czy jesteś obecnym właścicielem Pi, który chce dowiedzieć się więcej, czy potencjalnym właścicielem tego urządzenia o wielkości karty kredytowej, nie jest to przewodnik, którego nie możesz przegapić. Czytaj więcej ) lub ESP8266 Poznaj Arduino Killer: ESP8266Co jeśli powiem ci, że jest płyta deweloperska kompatybilna z Arduino z wbudowanym Wi-Fi za mniej niż 10 USD? Cóż, jest. Czytaj więcej .
Budujesz replikę KITT? Bardzo chciałbym zobaczyć wszystkie komentarze Knight Rider
Joe jest absolwentem informatyki na University of Lincoln w Wielkiej Brytanii. Jest profesjonalnym programistą, a kiedy nie lata latającymi dronami ani nie pisze muzyki, często można go znaleźć przy robieniu zdjęć lub tworzeniu filmów.