Reklama

Už ste si niekedy želali, aby ste mali svoje vlastné auto Knight Industries Two Thousand (KITT) - viete, od Knight Rider? Zostavte LED skener, aby sa váš sen o krok priblížil realite! Tu je konečný výsledok:

Čo potrebuješ

Na tento projekt nie je potrebných veľa častí. Možno ich už máte veľa:

  • 1 x Arduino UNO alebo podobné
  • 1 x doska na chlieb
  • 8 x červených LED
  • Rezistory 8 x 220 ohmov
  • 1 x 10 000 ohmový potenciometer
  • Samčie a mužské vodiče

Ak máte Štartovacia súprava Arduino Čo je súčasťou sady Arduino Starter Kit? [MakeUseOf vysvetľuje]Už som tu na MakeUseOf predstavil open-source hardvér Arduino, ale na vytvorenie niečoho z neho a skutočne začatia potrebujete viac ako len samotného Arduina. Arduino "štartovacie súpravy" sú ... Čítaj viac je pravdepodobné, že máte všetky tieto časti (čo môžete urobiť so štartovacou súpravou? 5 jedinečných projektov Arduino pre začiatočníkov, ktorých si môžete vyrobiť pomocou iba začiatočnej súpravy Čítaj viac ).

Takmer každý Arduino bude fungovať za predpokladu, že má osem dostupných kolíkov (Nikdy predtým ste Arduino nepoužívali?

instagram viewer
Začnite tu Začíname s Arduino: Príručka pre začiatočníkovArduino je otvorená prototypová platforma elektroniky založená na flexibilnom, ľahko použiteľnom hardvéri a softvéri. Je určený pre umelcov, dizajnérov, fandov a kohokoľvek, kto má záujem vytvárať interaktívne objekty alebo prostredia. Čítaj viac ). Mohol by si použite Shift Register Programovanie Arduino - hranie s registrami posunu (a.k.a ešte viac diód LED)Dnes sa vás pokúsim naučiť niečo o Shift Registers. Jedná sa o pomerne dôležitú súčasť programovania Arduino, v podstate preto, že rozširujú počet výstupov, ktoré môžete použiť výmenou za ... Čítaj viac na ovládanie diód LED, hoci to nie je potrebné pre tento projekt, pretože Arduino má dostatok pinov.

Plán výstavby

Arduino-Knight-Rider-Led-Scanner-Complete
Toto je veľmi jednoduchý projekt. Aj keď to z veľkého počtu vodičov môže vyzerať komplexne, každá jednotlivá časť je veľmi jednoduchá. Každá svetelná dióda (LED) je pripojená k svojmu Arduino kolíku. To znamená, že každú LED možno jednotlivo zapínať a vypínať. Potenciometer je pripojený k analógu Arduino v kolíkoch, ktorý sa použije na nastavenie rýchlosti skenera.

Okruh

Arduino-Knight-Rider-Circuit
Pripojte ľavý vonkajší kolík (pri pohľade spredu, s kolíkmi dole) potenciometra k zemi. Pripojte protiľahlý vonkajší kolík k + 5 V. Ak nefunguje správne, tieto kolíky otočte. Pripojte stredný pin k Arduino analógu v 2.

Pripojte anódu (dlhú nohu) každej LED k digitálnym kolíkom jedna až osem. Pripojte katódy (krátka noha) k zemi Arduino.

Kód

Vytvorte novú skicu a uložte ju ako „knightRider“. Tu je kód:

ledy const int [] = {1,2,3,4,5,6,7,8}; // LED kolíky. const int totalLeds = 8; int čas = 50; // Predvolené nastavenie rýchlosti void () {// Inicializácia všetkých výstupov pre (int i = 0; i <= celkové hodnoty; ++ i) {pinMode (led [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Skenovať sprava doľava = analogRead (2); digitalWrite (led [i], HIGH); oneskorenie (čas); digitalWrite (led [i - 1], HIGH); oneskorenie (čas); digitalWrite (led [i], LOW); } }

Poďme to rozobrať. Každý kolík LED je uložený v poli:

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

Pole je v podstate zbierka súvisiacich položiek. Tieto prvky sú definované ako konštanty („const“), čo znamená, že ich neskôr už nebude možné zmeniť. Nemusíte používať konštantu (kód bude fungovať perfektne, ak odstránite „const“), aj keď sa odporúča.

K prvkom poľa sa pristupuje pomocou hranatých zátvoriek („[]“) a celého čísla nazývaného index. Indexy začínajú na nule, takže „leds [2]“ by vrátilo tretí prvok v poli - pin 3. Polia uľahčujú písanie a čitateľnosť kódu, vďaka čomu počítač robí ťažkú ​​prácu!

Slučka for for sa používa na nastavenie každého kolíka ako výstupu:

pre (int i = 0; i <= celkové hodnoty; ++ i) {pinMode (led [i], OUTPUT); }

Tento kód je vo funkcii „setup ()“, pretože na začiatku programu musí byť spustený iba raz. Pre slučky sú veľmi užitočné. Umožňujú vám znova a znova spúšťať rovnaký kód s inou hodnotou. Sú ideálne pre prácu s poliami. Celé číslo „i“ je deklarované a k tejto premennej má prístup iba kód vo vnútri slučky (známy ako „rozsah“). Hodnota i začína na nule a pre každú iteráciu slučky je i zvýšené o jednu. Keď je hodnota i menšia alebo rovná premennej „totalLeds“, slučka „prestane“ (zastaví sa).

Hodnota i sa používa na prístup k poli „leds“. Táto slučka pristupuje ku každému prvku v poli a konfiguruje ho ako výstup. Mohli by ste ručne zadať „pinMode (pin, OUTPUT)“ osemkrát, ale prečo napísať osem riadkov, keď môžete napísať tri?

Aj keď vám niektoré programovacie jazyky dokážu povedať, koľko prvkov je v poli (zvyčajne so syntaxou, ako je array.length), Arduino ho nezjednodušuje (vyžaduje trochu viac matematiky). Keďže počet prvkov v poli je už známy, nejde o problém.

Arduino-Knight-Rider-LEDS

Vnútri hlavnej slučky (prázdna slučka ()) sú ďalšie dve pre slučky. Prvý zapne LED a potom vypne 1 - 8. Druhá slučka zapne a vypne LED 8 - 1. Všimnite si, ako je zapnutý aktuálny špendlík a či je zapnutý aj aktuálny špendlík plus jeden. Tým je zaistené, že vždy svietia vždy dve kontrolky LED, takže skener vyzerá realistickejšie.

Na začiatku každej slučky sa hodnota banku načíta do premennej „time“:

time = analogRead (2);

Toto sa robí dvakrát, raz vo vnútri každej slučky. Toto je potrebné neustále kontrolovať a aktualizovať. Keby to bolo mimo slučiek, stále by to fungovalo, malo by to však malé oneskorenie - spustilo by sa iba po dokončení vykonávania slučky. Hrnce sú analógové, preto sa používa „analogRead (pin)“. Vracia hodnoty medzi nulou (minimum) a 1023 (maximum). Arduino dokáže tieto hodnoty previesť na niečo užitočnejšie, pre tento prípad použitia sú však ideálne.

Oneskorenie medzi výmenou LED diód (alebo rýchlosťou skenera) je nastavené v milisekundách (1/1000 sekundy), takže maximálny čas je o niečo viac ako 1 sekunda.

Pokročilý skener

Arduino-LED-vonkajšie-pair

Teraz, keď poznáte základy, pozrime sa na niečo zložitejšie. Tento skener rozsvieti LED diódy v pároch, začínajúc zvonka a pracujúcimi. Potom to obráti a pôjde zvnútra k vonkajším párom. Tu je kód:

ledy const int [] = {1,2,3,4,5,6,7,8}; // LED kolíky. const int totalLeds = 8; const int halfLeds = 4; int čas = 50; // Predvolené nastavenie rýchlosti void () {// Inicializácia všetkých výstupov pre (int i = 0; i <= celkové hodnoty; ++ i) {pinMode (led [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Časový prehľadávanie vo dvojiciach = analogRead (2); digitalWrite (led [i], HIGH); digitalWrite (leds [(totalLeds - i) - 1], HIGH); oneskorenie (čas); digitalWrite (led [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], LOW); oneskorenie (čas); } }

Tento kód je o niečo zložitejší. Všimnite si, ako obe slučky prechádzajú z nuly na „halfLeds - 1“ (3). Vďaka tomu je skener lepší. Ak by obe slučky prešli zo 4 - 0 a 0 - 4, potom by rovnaké LED diódy dvakrát blikli v rovnakom poradí - nevyzeralo by to veľmi dobre.

Teraz by ste mali vlastniť funkčný LED skener Knight Rider! To by bolo ľahké upraviť tak, aby používal viac alebo väčšie LED diódy, alebo implementovať svoj vlastný vzor. Tento obvod je veľmi jednoduchý na pripojenie k Malinový koláč (nové pre Pi? Tu začnite Raspberry Pi: Neoficiálny návodČi už ste aktuálnym vlastníkom Pi, ktorý sa chce dozvedieť viac, alebo potenciálnym vlastníkom tohto zariadenia s veľkosťou kreditnej karty, nejde o sprievodcu, ktorého by ste chceli vynechať. Čítaj viac ) alebo ESP8266 Zoznámte sa s Arduino Killer: ESP8266Čo keby som vám povedal, že existuje doska na vývojárov kompatibilná s Arduino so vstavanou sieťou Wi-Fi za menej ako 10 dolárov? No, existuje. Čítaj viac .

Staviate repliku KITT? Bol by som rád, keby som v komentároch videl všetky veci Knight Ridera.

Joe je absolventom informatiky na University of Lincoln vo Veľkej Británii. Je to profesionálny vývojár softvéru a keď nelieta bezpilotných lietadiel alebo píše hudbu, často ho nájdu pri fotografovaní alebo výrobe videa.