Skelbimas
Ar kada norėjote, kad turėtumėte savo „Knight Industries“ dviejų tūkstančių (KITT) automobilį - žinote, iš „Knight Rider“? Pastatykite LED skaitytuvą vienu žingsniu arčiau realybės! Štai toks galutinis rezultatas:
Ko tau reikia
Šiam projektui reikalingų dalių nėra daug, ir galbūt jau turite daug iš jų:
- 1 x Arduino UNO ar panašus
- 1 x Duonos lentos
- 8 x raudoni šviesos diodai
- 8 x 220 omų varžai
- 1 x 10 k omų potenciometras
- Vyriškas ir patinas jungia laidus
Jei turite „Arduino“ pradinis rinkinys Kas yra „Arduino“ pradiniame rinkinyje? [„MakeUseOf“ paaiškina]Aš anksčiau pristačiau „Arduino“ atvirojo kodo aparatinę įrangą čia, „MakeUseOf“, bet norint sukurti ką nors iš jūsų ir pradėti, jums reikia ne tik tikrojo „Arduino“. Arduino „pradiniai rinkiniai“ yra ... Skaityti daugiau tikėtina, kad turite visas šias dalis (ką galima padaryti su starteriu? 5 unikalūs „Arduino“ projektai pradedantiesiems, kuriuos galite sukurti tiesiog pradiniu rinkiniu Skaityti daugiau ).
Beveik bet kuris „Arduino“ veiks, jei jame yra aštuoni turimi kaiščiai (Niekada anksčiau nenaudojote „Arduino“?
Pradėkite čia Darbo pradžia „Arduino“: vadovas pradedančiajam„Arduino“ yra atvirojo kodo elektronikos prototipų kūrimo platforma, pagrįsta lanksčia, lengvai naudojama aparatine ir programine įranga. Jis skirtas menininkams, dizaineriams, mėgėjams ir visiems, besidomintiems interaktyvių objektų ar aplinkos kūrimu. Skaityti daugiau ). Tu galėtum naudokite „Shift“ registrą „Arduino“ programavimas - žaidimas su poslinkio registrais (dar daugiau šviesos diodų)Šiandien pabandysiu jus šiek tiek išmokyti apie „Shift“ registrus. Tai yra gana svarbi „Arduino“ programavimo dalis iš esmės todėl, kad jie padidina išėjimų, kuriais galite naudotis, mainais į ... Skaityti daugiau valdyti šviesos diodus, nors tai nėra reikalinga šiam projektui, nes „Arduino“ yra pakankamai kaiščių.Sukurkite planą
Tai labai paprastas projektas. Nors iš daugybės laidų jis gali atrodyti sudėtingas, kiekviena atskira dalis yra labai paprasta. Kiekvienas šviesos diodas (LED) yra prijungtas prie savo „Arduino“ kaiščio. Tai reiškia, kad kiekvieną šviesos diodą galima atskirai įjungti ir išjungti. Prie Arduino analogo kaiščiais prijungtas potenciometras, kuris bus naudojamas skenerio greičiui reguliuoti.
Grandinė
Prijunkite potenciometro išorinį kairiąjį kaištį (žiūrėdami į priekį, su kaiščiais apačioje) į žemę. Prijunkite priešingą išorinį kaištį prie + 5v. Jei jis neveikia tinkamai, pakeiskite šiuos kaiščius. Prijunkite vidurinį kaištį prie Arduino analogo per 2.
Prijunkite kiekvieno šviesos diodo anodą (ilgąją koją) prie skaitmeninių kaiščių nuo vieno iki aštuonių. Prijunkite katodus (trumpą koją) prie Arduino žemės.
Kodas
Sukurkite naują eskizą ir išsaugokite jį kaip „knightRider“. Štai kodas:
const int leds [] = {1,2,3,4,5,6,7,8}; // Led smeigtukai. const int totalLeds = 8; vidinis laikas = 50; // Numatytasis greičio negaliojimo nustatymas () {// Inicijuokite visus išėjimus (int i = 0; i <= totalLeds; ++ i) {pinMode (šviesos diodai [i], OUTPUT); } } void loop () {for (int i = 0; i 0; --i) {// Laikas nuskaityti iš dešinės į kairę = analogRead (2); „digitalWrite“ (šviesos diodai [i], HIGH); delsimas (laikas); „digitalWrite“ (šviesos diodai [i - 1], AUKŠTAS); delsimas (laikas); „digitalWrite“ (šviesos diodai [i], LOW); } }
Išardykime. Kiekvienas LED kaištis saugomas masyve:
const int leds [] = {1,2,3,4,5,6,7,8};
Masyvas iš esmės yra susijusių daiktų rinkinys. Šie elementai yra apibūdinami kaip pastovūs („const“), tai reiškia, kad vėliau jų pakeisti nebegalima. Nereikia naudoti konstantos (kodas veiks puikiai, jei pašalinsite „const“), nors jis yra rekomenduojamas.
Masyvo elementai pasiekiami naudojant skliaustelius („[]“) ir sveikąjį skaičių, vadinamą rodykle. Indeksai prasideda nuo nulio, todėl „šviesos diodai [2]“ grąžintų trečiąjį masyvo elementą - 3 kaištį. Masyvai padaro kodą greitesnį ir lengviau skaitomą, jie priverčia kompiuterį atlikti sunkų darbą!
„A for loop“ yra naudojamas kiekvieno kaiščio nustatymui kaip išėjimui:
už (int i = 0; i <= totalLeds; ++ i) {pinMode (šviesos diodai [i], OUTPUT); }
Šis kodas yra funkcijos „setup ()“ viduje, nes programos pradžioje jį reikia paleisti tik vieną kartą. Dėl kilpų yra labai naudinga. Jie leidžia vėl ir vėl paleisti tą patį kodą, kiekvieną kartą naudojant skirtingą reikšmę. Jie puikiai tinka darbui su masyvais. Deklaruojamas sveikasis skaičius „i“, ir prie šio kintamojo gali prisijungti tik kodas, esantis kilpos viduje (tai vadinama „apimtimi“). I reikšmė prasideda nuo nulio, o už kiekvieną kilpos iteraciją i padidinama vienu. Kai i reikšmė yra mažesnė arba lygi kintamajam „totalLeds“, kilpa „nutrūksta“ (sustoja).
I reikšmė naudojama norint pasiekti „LED“ masyvą. Ši kilpa pasiekia kiekvieną masyvo elementą ir sukonfigūruoja jį kaip išėjimą. Galite rankiniu būdu įvesti aštuonis kartus „pinMode (pin, OUTPUT)“, bet kodėl rašyti aštuonias eilutes, kai galite rašyti tris?
Nors kai kurios programavimo kalbos gali pasakyti, kiek elementų yra masyve (paprastai naudojant sintaksę, pavyzdžiui, masyvo.length), Arduino to nepadaro taip paprasta (tai apima šiek tiek daugiau matematikos). Kadangi elementų skaičius masyve jau žinomas, tai nėra problema.
Pagrindinės kilpos viduje (tuščia kilpa ()) yra dar dvi kilpos. Pirmiausia šviesos diodai įsijungia, o tada išjungiami nuo 1 iki 8. Antroji kilpa įjungia ir įjungia šviesos diodus nuo 8 iki 1. Atkreipkite dėmesį, kaip įjungtas dabartinis kaištis, taip pat įjungtas dabartinis kaištis ir vienas. Tai garantuoja, kad visada yra du šviesos diodai tuo pačiu metu, todėl skaitytuvas atrodo tikroviškesnis.
Kiekvienos kilpos pradžioje puodo vertė skaitoma į „laiko“ kintamąjį:
laikas = analoginis skaitymas (2);
Tai daroma du kartus, vieną kartą kiekvienos kilpos viduje. Tai reikia nuolat tikrinti ir atnaujinti. Jei tai būtų už kilpų ribų, ji vis tiek veiktų, tačiau šiek tiek vėluotų - ji veiktų tik tada, kai kilpa bus baigta vykdyti. Puodai yra analoginiai, todėl naudojamas „analogRead (pin)“. Grąžinamos vertės nuo nulio (mažiausia) iki 1023 (didžiausia). „Arduino“ sugeba šias vertybes paversti kažkuo naudingesniu, tačiau jos puikiai tinka šiam naudojimo atvejui.
Atidėjimas tarp šviesos diodų keitimo (arba skaitytuvo greičio) nustatomas milisekundėmis (1/1000 sekundės), taigi maksimalus laikas yra šiek tiek daugiau nei 1 sekundė.
Išplėstinis skaitytuvas
Dabar, kai žinote pagrindus, pažvelkime į ką nors sudėtingesnio. Šis skaitytuvas užsidegs šviesos diodus poromis, pradedant nuo išorės ir dirbant. Tada tai pakeis ir pereis iš vidaus į išorę. Štai kodas:
const int leds [] = {1,2,3,4,5,6,7,8}; // Led smeigtukai. const int totalLeds = 8; const int halfLeds = 4; vidinis laikas = 50; // Numatytasis greičio negaliojimo nustatymas () {// Inicijuokite visus išėjimus (int i = 0; i <= totalLeds; ++ i) {pinMode (šviesos diodai [i], OUTPUT); } } void loop () {for (int i = 0; i 0; --i) {// Nuskaitymo porų laikas = analogRead (2); „digitalWrite“ (šviesos diodai [i], HIGH); „digitalWrite“ (šviesos diodai [(totalLeds - i) - 1], HIGH); delsimas (laikas); „digitalWrite“ (šviesos diodai [i], LOW); „digitalWrite“ (šviesos diodai [(totalLeds - i) - 1], MAŽAI); delsimas (laikas); } }
Šis kodas yra šiek tiek sudėtingesnis. Atkreipkite dėmesį, kaip abi kilpos pereina nuo nulio iki „halfLeds - 1“ (3). Tai padaro geresnį skaitytuvą. Jei abi kilpos pakis nuo 4 iki 0 ir 0 - 4, tada tie patys šviesos diodai mirksės du kartus ta pačia seka - tai neatrodys labai gerai.
Dabar turėtumėte turėti veikiantį „Knight Rider“ LED skaitytuvą! Tai būtų nesunku modifikuoti, jei norite naudoti daugiau ar didesnių šviesos diodų arba įgyvendinti savo modelį. Šią grandinę labai lengva perjungti į Aviečių pi (naujas Pi? Pradėti čia Raspberry Pi: Neoficialus vadovėlisNesvarbu, ar esate dabartinis „Pi“ savininkas, norintis sužinoti daugiau, ar potencialus šio kredito kortelės dydžio įrenginio savininkas, tai nėra vadovas, kurio norite praleisti. Skaityti daugiau ) arba ESP8266 Susipažinkite su Arduino žudiku: ESP8266O kas, jei aš jums pasakyčiau, kad ten yra „Arduino“ suderinama „dev“ plokštė su įmontuotu „Wi-Fi“ už mažiau nei 10 USD? Na, yra. Skaityti daugiau .
Ar kuriate KITT repliką? Norėčiau, kad komentaruose pamatyčiau viską, kas yra „Knight Rider“.
Džo yra baigusi kompiuterių mokslą Linkolno universitete, JK. Jis yra profesionalus programinės įrangos kūrėjas, o kai jis neskraido dronais ar nerašo muzikos, jį dažnai galima rasti fotografuojant ar kuriant vaizdo įrašus.