Reklaam

Kunagi soovisin, et teil oleks oma Knight Industries Kaks tuhat (KITT) auto - teate, kas Knight Riderilt? Tehke oma unistus ühe sammu reaalsusele lähemale, ehitades sisse LED-skanneri! Siin on lõpptulemus:

Mida sa vajad

Selle projekti jaoks pole vaja palju osi ja teil võib neid juba palju olla:

  • 1 x Arduino UNO vms
  • 1 x leivatahvel
  • 8 x punast LED-i
  • 8 x 220 oomi takistid
  • 1 x 10 k oomi potentsiomeeter
  • Mees ja mees ühendavad juhtmed

Kui teil on Arduino stardikomplekt Mis on Arduino stardikomplektis? [MakeUseOf selgitab]Olen varem tutvustanud siin MakeUseOfil Arduino avatud lähtekoodiga riistvara, kuid selleks, et midagi sellest välja ehitada ja tegelikult tööle asuda, vajate enamat kui ainult tegelikku Arduinot. Arduino "stardikomplektid" on ... Loe rohkem on tõenäoline, et teil on kõik need osad (mida saate teha stardikomplektiga? 5 ainulaadset Arduino projekti algajatele, mida saate teha lihtsalt stardikomplektiga Loe rohkem ).

Peaaegu iga Arduino töötab, kui sellel on kaheksa saadaolevat tihvti (kas te pole kunagi Arduinot kasutanud?

Alusta siit Arduino kasutamise alustamine: Algajate juhendArduino on avatud lähtekoodiga elektroonika prototüüpide platvorm, mis põhineb paindlikul, hõlpsasti kasutataval riist- ja tarkvaral. See on mõeldud kunstnikele, disaineritele, harrastajatele ja kõigile, kes on huvitatud interaktiivsete objektide või keskkondade loomisest. Loe rohkem ). Sa võiksid kasutage vahetuste registrit Arduino programmeerimine - nihkeregistritega mängimine (a.k.a veelgi rohkem LEDe)Täna üritan teile natuke Shift-registrite kohta õpetada. Need on Arduino programmeerimises üsna oluline osa, peamiselt seetõttu, et need suurendavad väljundite arvu, mida saate kasutada vastutasuks ... Loe rohkem LED-ide juhtimiseks, ehkki see pole selle projekti jaoks vajalik, kuna Arduinol on piisavalt tihvte.

Ehitamise plaan

Arduino-Knight-Rider-Led-skanner-täielik
See on väga lihtne projekt. Ehkki see võib suure hulga juhtmete hulgast tunduda keeruline, on iga üksik osa väga lihtne. Iga valgusdiood (LED) on ühendatud omaenda Arduino tihvtiga. See tähendab, et iga LED-i saab eraldi sisse ja välja lülitada. Arduino analoogi külge on ühendatud tihvtidega potentsiomeeter, mida kasutatakse skanneri kiiruse reguleerimiseks.

Vooluring

Arduino-Knight-Rider-Circuit
Ühendage potentsiomeetri vasak vasak tihvt (eestvaates koos alumiste tihvtidega) maapinnaga. Ühendage vastupidine välimine tihvt + 5v-ga. Kui see ei tööta õigesti, keerake need tihvtid ümber. Ühendage keskmine tihvt Arduino analoogiga 2-s.

Ühendage iga LED-i anood (pikk jalg) digitaalsete tihvtidega üks kuni kaheksa. Ühendage katoodid (lühike jalg) Arduino maapinnaga.

Kood

Looge uus visand ja salvestage see kui „knightRider”. Siin on kood:

const int ledid [] = {1,2,3,4,5,6,7,8}; // Led nööpnõelad. const int totalLeds = 8; vaheaeg = 50; // Kiiruse vaikeseadistus vaikimisi seadistamine () {// Initsialiseerige kõik väljundid jaoks (int i = 0; i <= kokkuLeds; ++ i) {pinMode (LEDid [i], VÄLJUND); } } tühine silmus () {jaoks (int i = 0; i  0; --i) {// Skaneerimine paremalt vasakule = analogRead (2); digitalWrite (led (i), HIGH); hilinemisaeg); digitalWrite (led (i - 1), HIGH); hilinemisaeg); digitalWrite (led (i), LOW); } }

Jagage see ära. Iga LED-tihvt on salvestatud massiivi:

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

Massiiv on sisuliselt seotud esemete kogum. Need elemendid on määratletud konstantsena (“const”), mis tähendab, et neid ei saa hiljem muuta. Te ei pea kasutama konstanti (kood töötab suurepäraselt, kui eemaldate „const”), ehkki see on soovitatav.

Massiivi elementide juurde pääseb nurksulgude (“[]”) ja täisarvu, mida nimetatakse indeksiks, kasutamiseks. Indeksid algavad nullist, nii et “LEDid [2]” tagastaks massiivi kolmanda elemendi - nööp 3. Massiivid muudavad koodi kirjutamise kiiremaks ja hõlpsamini loetavaks. Need muudavad arvuti raske töö ära!

A-silmuse jaoks kasutatakse iga tihvti väljundina seadistamist:

jaoks (int i = 0; i <= kokkuLeds; ++ i) {pinMode (LEDid [i], VÄLJUND); }

See kood asub funktsioonis “setup ()”, kuna seda tuleb programmi alguses käivitada ainult üks kord. Sest silmused on väga kasulikud. Need võimaldavad teil ikka ja jälle sama koodi käivitada, iga kord erineva väärtusega. Need sobivad suurepäraselt massiividega töötamiseks. Deklareeritakse täisarv „i” ja sellele muutujale pääseb ligi ainult ahelas asuvale koodile (seda nimetatakse „ulatuseks”). I väärtus algab nullist ja silmuse iga iteratsiooni korral suurendatakse i ühega. Kui i väärtus on muutujaga „totalLeds” väiksem või sellega võrdne, siis silmus katkeb (peatub).

I väärtust kasutatakse „leds” -massiivi juurde pääsemiseks. See silmus pääseb juurde igale massiivi elemendile ja konfigureerib selle väljundina. Võiksite käsitsi kirjutada „pinMode (pin, OUTPUT)” kaheksa korda, kuid miks kirjutada kaheksa rida, kui saate kirjutada kolm?

Kuigi mõned programmeerimiskeeled võivad öelda, mitu elementi on massiivis (tavaliselt süntaksiga nagu massiivi pikkus), ei tee Arduino seda nii lihtsaks (see hõlmab natuke rohkem matemaatikat). Kuna massiivi elementide arv on juba teada, pole see probleem.

Arduino-Knight-Rider-LED-id

Põhisilmuse sees (tühine silmus ()) on silmuste jaoks veel kaks. Esimene paneb valgusdioodid põlema ja siis välja 1 - 8. Teine silmus lülitab valgusdioodid sisse ja siis välja 8 - 1. Pange tähele, kuidas praegune tihvt on sisse lülitatud ja ka praegune tihvt pluss üks on sisse lülitatud. See tagab, et alati on korraga sisse lülitatud kaks LED-i, muutes skanneri realistlikumaks.

Iga silmuse alguses loetakse poti väärtus muutujaks “aeg”:

aeg = analogRead (2);

Seda tehakse kaks korda, üks kord iga silmuse sees. Seda tuleb pidevalt kontrollida ja ajakohastada. Kui see asuks väljaspool silmuseid, siis see ikkagi töötaks, kuid siiski tekiks väike viivitus - see töötab ainult siis, kui silmus on käitamise lõpetanud. Potid on analoogsed, seetõttu kasutatakse “analogRead (pin)”. See tagastab väärtused vahemikus null (minimaalne) kuni 1023 (maksimaalne). Arduino on võimeline neid väärtusi teisendama millekski kasulikumaks, kuid need sobivad selle kasutamise jaoks ideaalselt.

Valgusdioodide vahetamise (või skanneri kiiruse) vaheline viivitus seatakse millisekundites (1/1000 sekundit), nii et maksimaalne aeg on veidi üle 1 sekundi.

Täpsem skanner

Arduino-LED-id-välis-paarid

Nüüd, kui teate põhitõdesid, vaatame midagi keerukamat. See skanner süttib LED-id paarina, alustades väljast ja töötades sisse. Seejärel pöörab see ümber ja liigub seestpoolt väljapoole. Siin on kood:

const int ledid [] = {1,2,3,4,5,6,7,8}; // Led nööpnõelad. const int totalLeds = 8; const int halfLeds = 4; vaheaeg = 50; // Kiiruse vaikeseadistus vaikimisi seadistamine () {// Initsialiseerige kõik väljundid jaoks (int i = 0; i <= kokkuLeds; ++ i) {pinMode (LEDid [i], VÄLJUND); } } tühine silmus () {jaoks (int i = 0; i  0; --i) {// Paari väljalülitamise aeg = analogRead (2); digitalWrite (led (i), HIGH); digitalWrite (LEDid ((kokkuLeds - i) - 1], HIGH); hilinemisaeg); digitalWrite (led (i), LOW); digitalWrite (LED-id [(totalLeds - i) - 1], LOW); hilinemisaeg); } }

See kood on pisut keerulisem. Pange tähele, kuidas mõlemad ahelad lähevad nullist väärtuseni “halfLeds - 1” (3). See muudab skanneri paremaks. Kui mõlemad ahelad läheksid vahemikku 4 - 0 ja 0 - 4, siis vilguksid samad LEDid kaks korda samas järjestuses - see ei tundu eriti hea.

Nüüd peaks teil olema töötav Knight Rider LED-skanner! Seda oleks lihtne muuta, et kasutada rohkem või suuremaid LED-e või rakendada oma muster. Seda vooluringi on väga lihtne teisaldada Vaarika Pi (kas uus on Pi? Alusta siit Vaarika Pi: mitteametlik juhendajaÜkskõik, kas olete praegune Pi omanik, kes soovib rohkem teada saada, või selle krediitkaardisuurusega seadme potentsiaalset omanikku, pole see juhend, mida soovite mööda lasta. Loe rohkem ) või ESP8266 Tutvuge Arduino tapjaga: ESP8266Mis siis, kui ma ütleksin teile, et seal on sisseehitatud WiFi-ga Arduino-ühilduv arendusplaat vähem kui 10 dollari eest? Noh, on olemas. Loe rohkem .

Kas sa ehitad KITTi koopiat? Mulle meeldiks, kui kõike Knight Riderit kommentaarides näeksime.

Joe on lõpetanud Ühendkuningriigi Lincolni ülikooli arvutiteaduse. Ta on professionaalne tarkvaraarendaja ja kui ta ei lenda droonidega ega kirjuta muusikat, võib teda sageli leida pildistamas või videot tootmas.