Reklāma
Vai jūs kādreiz vēlējāties, lai jums būtu sava automašīna Knight Industries Two Thousand (KITT) - jūs zināt, no Knight Rider? Padariet savu sapni par vienu soli tuvāk realitātei, uzbūvējot LED skeneri! Šis ir gala rezultāts:
Ko tev vajag
Šim projektam nav vajadzīgs daudz detaļu, un jums, iespējams, jau ir daudz no tām:
- 1 x Arduino UNO vai līdzīgs
- 1 x maizes dēlis
- 8 x sarkanas gaismas diodes
- 8 x 220 omi rezistori
- 1 x 10 k ohm potenciometrs
- No vīrieša līdz vīrietim piekabiniet vadus
Ja jums ir Arduino sākuma komplekts Kas ir iekļauts Arduino sākuma komplektā? [MakeUseOf skaidrojumi]Es iepriekš esmu iepazīstinājis Arduino atvērtā koda aparatūru šeit vietnē MakeUseOf, taču, lai kaut ko izveidotu no tā un faktiski sāktu, jums ir nepieciešams vairāk nekā tikai faktiskais Arduino. Arduino "sākuma komplekti" ir ... Lasīt vairāk iespējams, ka jums ir visas šīs daļas (ko jūs varat padarīt ar sākuma komplektu? 5 unikāli Arduino projekti iesācējiem, kurus varat izveidot tikai ar sākuma komplektu Lasīt vairāk ).
Gandrīz jebkurš Arduino strādās, ja tam ir astoņi pieejamie tapas (Vai nekad iepriekš neesat izmantojis Arduino? Sāciet šeit Darba sākšana ar Arduino: rokasgrāmata iesācējiemArduino ir atvērtā koda elektronikas prototipu veidošanas platforma, kuras pamatā ir elastīga, ērti lietojama aparatūra un programmatūra. Tas ir paredzēts māksliniekiem, dizaineriem, hobijiem un ikvienam, kurš ir ieinteresēts radīt interaktīvus objektus vai vidi. Lasīt vairāk ). Tu varētu izmantojiet Shift reģistru Arduino programmēšana - spēlē ar maiņu reģistriem (vēl vairāk gaismas diožu)Šodien es mēģināšu jūs mazliet iemācīt par maiņu reģistriem. Šīs ir diezgan nozīmīgas Arduino programmēšanas daļas, galvenokārt tāpēc, ka tās paplašina izvades daudzumu, ko varat izmantot apmaiņā pret ... Lasīt vairāk lai kontrolētu gaismas diodes, lai gan tas nav nepieciešams šim projektam, jo Arduino ir pietiekami daudz tapas.
Veidot plānu
Šis ir ļoti vienkāršs projekts. Lai gan tas var šķist sarežģīts no lielā vadu skaita, katra atsevišķā daļa ir ļoti vienkārša. Katra gaismas diode (LED) ir savienota ar paša Arduino tapu. Tas nozīmē, ka katru gaismas diodi var individuāli ieslēgt un izslēgt. Arduino analogam tapās ir pievienots potenciometrs, kas tiks izmantots skenera ātruma regulēšanai.
Aplis
Pievienojiet potenciometra ārējo kreiso tapu (skatoties uz priekšu ar tapām apakšā) uz zemi. Pievienojiet pretējo ārējo tapu ar + 5v. Ja tas nedarbojas pareizi, apgrieziet šos tapas. Savienojiet vidējo tapu ar Arduino analogo 2.
Pievienojiet katras gaismas diodes anodu (garo kāju) ciparu tapām no viena līdz astoņai. Pievienojiet katodus (īso kāju) Arduino zemei.
Kods
Izveidojiet jaunu skici un saglabājiet to kā “knightRider”. Šis ir kods:
const int leds [] = {1,2,3,4,5,6,7,8}; // Led tapas. const int totalLeds = 8; int laiks = 50; // Noklusējuma ātruma spēkā neesamības iestatīšana () {// Inicializējiet visas izejas (int i = 0; i <= totalLeds; ++ i) {pinMode (gaismas diodes [i], OUTPUT); } } tukšas cilpas () {par (int i = 0; i 0; --i) {// Laiks no labās uz kreiso laiku = analogRead (2); digitalWrite (gaismas diodes [i], AUGSTS); kavēšanās (laiks); digitalWrite (gaismas diodes [i - 1], AUGSTS); kavēšanās (laiks); digitalWrite (gaismas diodes [i], LOW); } }
Sadalīsim to. Katru LED tapu glabā masīvā:
const int leds [] = {1,2,3,4,5,6,7,8};
Masīvs būtībā ir saistītu priekšmetu kolekcija. Šie elementi tiek definēti kā nemainīgi (“const”), kas nozīmē, ka tos vēlāk nevar mainīt. Jums nav jāizmanto konstante (kods darbosies lieliski, ja noņemsit “const”), lai gan tas ir ieteicams.
Masīva elementiem var piekļūt, izmantojot kvadrātiekavas (“[]”) un veselu skaitli, ko sauc par indeksu. Indeksi sākas ar nulli, tāpēc “gaismas diodes [2]” atgriezītu masīva trešo elementu - 3. tapu. Masīvi padara kodu ātrāku rakstīšanu un vieglāk lasāmu, tie padara datoru smagu darbu!
A cilpu izmanto, lai iestatītu katru tapu kā izvadi:
par (int i = 0; i <= totalLeds; ++ i) {pinMode (gaismas diodes [i], OUTPUT); }
Šis kods ir funkcijas “setup ()” iekšpusē, jo tas ir jāpalaiž tikai vienu reizi programmas sākumā. Par cilpas ir ļoti noderīgas. Tie ļauj jums atkal un atkal palaist to pašu kodu, katru reizi izmantojot atšķirīgu vērtību. Tie ir lieliski piemēroti darbam ar blokiem. Deklarēts vesels skaitlis “i”, un šim mainīgajam var piekļūt tikai cilpas iekšējais kods (tas ir pazīstams kā “darbības joma”). I vērtība sākas ar nulli, un katrai cilpas iterācijai i tiek palielināta par vienu. Kad i vērtība ir mazāka vai vienāda ar mainīgo “totalLeds”, cilpa “saplīst” (apstājas).
I vērtību izmanto, lai piekļūtu “led” masīvam. Šī cilpa piekļūst visiem masīva elementiem un konfigurē tos kā izvadi. Jūs varētu manuāli rakstīt “pinMode (pin, OUTPUT)” astoņas reizes, bet kāpēc rakstīt astoņas rindas, ja jūs varat rakstīt trīs?
Lai gan dažas programmēšanas valodas var pateikt, cik elementu ir masīvā (parasti ar tādu sintakse kā masīvs.length), Arduino to nepadara tik vienkāršu (tas prasa nedaudz vairāk matemātikas). Tā kā elementu skaits masīvā jau ir zināms, tā nav problēma.
Galvenās cilpas iekšpusē (tukšs cilpa ()) ir vēl divi cilpām. Pirmais ieslēdz un ieslēdz LED gaismas diodes no 1 līdz 8. Otrajā cilpā gaismas diodes tiek ieslēgtas un izslēgtas no 8 līdz 1. Ievērojiet, kā pašreizējais tapa ir ieslēgts, kā arī ieslēgts pašreizējais kontaktspraudnis plus viens. Tas nodrošina, ka vienmēr ir divas gaismas diodes vienlaikus, padarot skeneri reālāku.
Katras cilpas sākumā poda vērtību nolasa mainīgajā “laiks”:
laiks = analogRead (2);
Tas tiek veikts divreiz, vienu reizi katras cilpas iekšpusē. Tas ir pastāvīgi jāpārbauda un jāatjaunina. Ja tas būtu ārpus cilpām, tas joprojām darbotos, tomēr būtu neliela kavēšanās - tas darbotos tikai tad, kad cilpa ir pabeigta izpildīšana. Katli ir analogie, tāpēc tiek izmantots “analogRead (pin)”. Tas atgriež vērtības no nulles (minimums) līdz 1023 (maksimums). Arduino spēj pārveidot šīs vērtības par kaut ko noderīgāku, tomēr tās ir lieliski piemērotas šim lietošanas gadījumam.
Aizkavēšanās starp gaismas diožu maiņu (vai skenera ātrumu) tiek iestatīta milisekundēs (1/1000 sekundes), tāpēc maksimālais laiks ir nedaudz vairāk par 1 sekundi.
Advanced skeneris
Tagad, kad jūs zināt pamatus, apskatīsim kaut ko sarežģītāku. Šis skeneris iedegs gaismas diodes pa pāriem, sākot no ārpuses un strādājot iekšā. Pēc tam tas mainīsies un pāries no iekšpuses uz ārpusi. Šis ir kods:
const int leds [] = {1,2,3,4,5,6,7,8}; // Led tapas. const int totalLeds = 8; const int halfLeds = 4; int laiks = 50; // Noklusējuma ātruma spēkā neesamības iestatīšana () {// Inicializējiet visas izejas (int i = 0; i <= totalLeds; ++ i) {pinMode (gaismas diodes [i], OUTPUT); } } tukšas cilpas () {par (int i = 0; i 0; --i) {// Skenēšanas iekšpusē pāru izejas laiks = analogRead (2); digitalWrite (gaismas diodes [i], AUGSTS); digitalWrite (gaismas diodes [(totalLeds - i) - 1], HIGH); kavēšanās (laiks); digitalWrite (gaismas diodes [i], LOW); digitalWrite (gaismas diodes [(totalLeds - i) - 1], LOW); kavēšanās (laiks); } }
Šis kods ir nedaudz sarežģītāks. Ievērojiet, kā abas cilpas virzās no nulles uz “halfLeds - 1” (3). Tas padara labāku skeneri. Ja abas cilpas mainījās no 4 līdz 0 un 0 - 4, tad vienas un tās pašas gaismas diodes divreiz mirgos vienā secībā - tas neizskatīsies ļoti labi.
Tagad jums vajadzētu piederēt strādājošam Knight Rider LED skenerim! To būtu viegli modificēt, lai izmantotu vairāk vai lielākus gaismas diodes vai ieviestu pats savu modeli. Šī shēma ir ļoti viegli pieslēdzama Aveņu Pi (jauns Pi? Sāc šeit Aveņu Pi: neoficiāla apmācībaNeatkarīgi no tā, vai esat pašreizējais Pi īpašnieks, kurš vēlas uzzināt vairāk, vai šīs kredītkartes lieluma ierīces potenciālais īpašnieks, tas nav ceļvedis, kuru vēlaties palaist garām. Lasīt vairāk ) vai ESP8266 Iepazīstieties ar Arduino slepkavu: ESP8266Ko darīt, ja es jums teiktu, ka tur ir ar Arduino saderīga dev plātne ar iebūvētu Wi-Fi mazāk par 10 ASV dolāriem? Nu, tur ir. Lasīt vairāk .
Vai jūs veidojat kopiju KITT? Es labprāt komentāros redzētu visas lietas Knight Rider.
Džo ir absolvējis datorzinātnes Linkolna universitātē, Lielbritānijā. Viņš ir profesionāls programmatūras izstrādātājs, un, kad viņš nelido ar droniem un neraksta mūziku, viņu bieži var atrast fotografējot vai producējot video.