reklama

Přáli jste si někdy, abyste měli své vlastní auto Knight Industries Two Thousand (KITT) - víte, od Knight Rider? Vytvořte si svůj sen o krok blíže realitě vytvořením skeneru LED! Zde je konečný výsledek:

Co potřebuješ

Pro tento projekt není potřeba mnoho částí a možná už jich máte mnoho:

  • 1 x Arduino UNO nebo podobné
  • 1 x prkénko
  • 8 x červených LED
  • Rezistory 8 x 220 ohmů
  • 1 x 10 k ohmový potenciometr
  • Dráty pro připojení samců k mužům

Pokud máte Startovací souprava Arduino Co je součástí sady Arduino Starter Kit? [MakeUseOf vysvětluje]Předtím jsem zde na MakeUseOf představil open-source hardware Arduino, ale potřebujete něco víc než jen samotného Arduina, abyste z něj něco vytvořili a mohli začít. Arduino "startovací sady" jsou ... Přečtěte si více je pravděpodobné, že máte všechny tyto části (co můžete udělat se startovací sadou? 5 jedinečných projektů Arduino pro začátečníky, které si můžete vyrobit pomocí pouze sady Starter Kit Přečtěte si více ).

Téměř každý Arduino bude fungovat, za předpokladu, že má osm dostupných kolíků (Nikdy předtím jste Arduino nepoužívali?

instagram viewer
Začněte zde Začínáme s Arduino: Příručka pro začátečníkyArduino je platforma s otevřeným zdrojovým kódem elektroniky založená na flexibilním, snadno použitelném hardwaru a softwaru. Je určen pro umělce, designéry, fandy a kohokoli, kdo má zájem o vytváření interaktivních objektů nebo prostředí. Přečtěte si více ). Mohl bys použijte Shift Register Programování Arduino - hraní s registry Shift (a.k.a ještě více LED)Dnes se vás pokusím trochu naučit o Shift Registers. Jedná se o docela důležitou součást programování Arduino, v podstatě proto, že rozšiřují počet výstupů, které můžete použít, výměnou za ... Přečtěte si více k ovládání LED, i když to pro tento projekt není nutné, protože Arduino má dost kolíků.

Sestavte plán

Skener Arduino-Knight-Rider-Led-Complete
Jedná se o velmi jednoduchý projekt. I když to může vypadat komplexně z velkého počtu vodičů, každá jednotlivá část je velmi jednoduchá. Každá světelná dioda (LED) je připojena k vlastnímu Arduino pin. To znamená, že každou LED lze jednotlivě zapínat a vypínat. Potenciometr je připojen k analogu Arduino v pinech, který bude použit k nastavení rychlosti skeneru.

Okruh

Okruh Arduino-Knight-Rider
Připojte vnější levý kolík (při pohledu zepředu, s kolíky dole) potenciometru k zemi. Připojte opačný vnější kolík k + 5V. Pokud to nefunguje správně, otočte tyto kolíky. Připojte prostřední pin k Arduino analogu ve 2.

Připojte anodu (dlouhou nohu) každé LED k digitálním pinům jeden až osm. Připojte katody (krátká noha) k Arduino zemi.

Kód

Vytvořte novou skicu a uložte ji jako „knightRider“. Zde je kód:

ledky const int [] = {1,2,3,4,5,6,7,8}; // LED kolíky. const int totalLeds = 8; int čas = 50; // Výchozí nastavení rychlosti void () {// Inicializace všech výstupů pro (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Skenovat zprava doleva = analogRead (2); digitalWrite (led [i], HIGH); zpoždění); digitalWrite (led [i - 1], HIGH); zpoždění); digitalWrite (LED [i], LOW); } }

Pojďme to rozebrat. Každý pin LED je uložen v poli:

ledky const int [] = {1,2,3,4,5,6,7,8};

Pole je v podstatě soubor souvisejících položek. Tyto prvky jsou definovány jako konstanta („const“), což znamená, že je nelze později změnit. Nemusíte používat konstantu (kód bude fungovat perfektně, pokud odstraníte „const“), i když se doporučuje.

K prvkům pole se přistupuje pomocí hranatých závorek („[]“) a celého čísla nazývaného index. Indexy začínají na nule, takže „leds [2]“ vrátí třetí prvek v poli - pin 3. Pole usnadňují psaní a čitelnost kódu, díky němuž počítač dělá těžkou práci!

Smyčka for for se používá k nastavení každého pinu jako výstupu:

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

Tento kód je uvnitř funkce „setup ()“, protože na začátku programu musí být spuštěn pouze jednou. Pro smyčky jsou velmi užitečné. Umožňují vám znovu a znovu spouštět stejný kód s pokaždé jinou hodnotou. Jsou ideální pro práci s poli. Celé číslo „i“ je deklarováno a k této proměnné má přístup pouze kód uvnitř smyčky (známý jako „obor“). Hodnota i začíná na nule a pro každou iteraci smyčky je i zvýšena o jednu. Jakmile je hodnota i menší nebo rovna proměnné „totalLeds“, smyčka se „přeruší“ (zastaví).

Hodnota i se používá pro přístup k poli „leds“. Tato smyčka přistupuje ke každému prvku v poli a konfiguruje jej jako výstup. Mohli byste ručně zadat „pinMode (pin, OUTPUT)“ osmkrát, ale proč napsat osm řádků, když můžete napsat tři?

Zatímco některé programovací jazyky vám mohou sdělit, kolik prvků je v poli (obvykle se syntaxí, jako je array.length), Arduino to neznamená, že je to tak jednoduché (zahrnuje trochu více matematiky). Protože počet prvků v poli je již znám, není to problém.

LED diody Arduino-Knight-Rider

Uvnitř hlavní smyčky (prázdná smyčka ()) jsou další dvě smyčky. První zapíná a vypíná LED 1 - 8. Druhá smyčka zapíná a vypíná LED diody 8 - 1. Všimněte si, jak je zapnutý aktuální pin a současně je zapnutý aktuální pin plus jeden. Tím je zajištěno, že jsou vždy dvě LED diody zapnuté současně, takže skener vypadá realističtěji.

Na začátku každé smyčky se hodnota potu načte do proměnné „time“:

time = analogRead (2);

To se provádí dvakrát, jednou uvnitř každé smyčky. To je třeba neustále kontrolovat a aktualizovat. Pokud by to bylo mimo smyčky, stále by to fungovalo, ale došlo by k malému zpoždění - spustilo by se pouze po dokončení provádění smyčky. Hrnce jsou analogové, proto se používá „analogRead (pin)“. Vrací hodnoty mezi nulou (minimum) a 1023 (maximum). Arduino je schopno převést tyto hodnoty na něco užitečnějšího, jsou však pro tento případ použití perfektní.

Zpoždění mezi změnou LED (nebo rychlostí skeneru) je nastaveno v milisekundách (1/1000 sekundy), takže maximální doba je něco přes 1 sekundu.

Pokročilý skener

Arduino-LED-venkovní páry

Nyní, když znáte základy, pojďme se podívat na něco složitějšího. Tento skener rozsvítí diody LED ve dvojicích, které začínají z vnějšku a pracují. Potom to obrátí a půjde zevnitř do vnějších párů. Zde je kód:

ledky const int [] = {1,2,3,4,5,6,7,8}; // LED kolíky. const int totalLeds = 8; const int halfLeds = 4; int čas = 50; // Výchozí nastavení rychlosti void () {// Inicializace všech výstupů pro (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Čas prohledávání uvnitř párů = analogRead (2); digitalWrite (led [i], HIGH); digitalWrite (leds [(totalLeds - i) - 1], HIGH); zpoždění); digitalWrite (LED [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], LOW); zpoždění); } }

Tento kód je o něco složitější. Všimněte si, jak se obě smyčky pohybují od nuly k „halfLeds - 1“ (3). Díky tomu je lepší skener. Pokud by obě smyčky šly ze 4 - 0 a 0 - 4, pak by stejné LED diody blikaly dvakrát ve stejné sekvenci - to by nevypadalo moc dobře.

Nyní byste měli vlastnit funkční LED skener Knight Rider! To by bylo snadné upravit tak, aby používal více nebo větší LED, nebo implementovat svůj vlastní vzor. Tento obvod je velmi snadné přenést na Raspberry Pi (nové pro Pi? Začněte zde Raspberry Pi: Neoficiální výukaAť už jste současným majitelem Pi, který se chce dozvědět více, nebo potenciálním vlastníkem tohoto zařízení s velikostí kreditní karty, nejedná se o průvodce, kterého byste si chtěli nechat ujít. Přečtěte si více ) nebo ESP8266 Seznamte se s Arduino Killer: ESP8266Co kdybych ti řekl, že je tu deska pro Arduino kompatibilní s vestavěným Wi-Fi za méně než 10 $? No, je. Přečtěte si více .

Stavíte repliku KITT? Rád bych viděl všechny věci Knight Ridera v komentářích.

Joe je absolventem informatiky na University of Lincoln ve Velké Británii. Je to profesionální softwarový vývojář, a když nelétá dronů nebo píše hudbu, často ho najde, když fotografuje nebo produkuje videa.