Oglas

Jeste li ikad poželjeli da imate svoj automobil Knight Industries Two Thousand (KITT) - znate, od Knight Rider-a? Učinite svoj san jedan korak bliže stvarnosti izradom LED skenera! Evo krajnjeg rezultata:

Što trebaš

Za ovaj projekt nije potrebno puno dijelova, a možete ih imati već mnogo:

  • 1 x Arduino UNO ili slično
  • 1 x ploča za kruh
  • 8 x crvene LED
  • Otpornici 8 x 220 ohm
  • Potenciometar 1 x 10k ohm
  • Spoji žice od muškarca do muškarca

Ako imate Arduino starter kit Što je uključeno u Arduino Starter Kit? [MakeUseOf objašnjava]Prethodno sam predstavio Arduino hardver otvorenog koda ovdje na MakeUseOf-u, ali trebat će vam više od samog Arduino-a da biste nešto napravili od njega i zapravo započeli. Arduino "starter setove" su ... Čitaj više vjerojatno imate sve te dijelove (što možete napraviti sa starter kitom? 5 jedinstvenih Arduino projekata za početnike koje možete napraviti sa samo starter kitom Čitaj više ).

Gotovo svaki Arduino će raditi, pod uvjetom da ima osam dostupnih igara (nikad ranije niste koristili Arduino?

instagram viewer
Započnite ovdje Početak rada s Arduinom: Vodič za početnikeArduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom hardveru i softveru koji se lako koristi. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja. Čitaj više ). Mogao bi koristite Shift Register Arduino programiranje - igra se sa pomacima registara (a.k.a još više LED-ova)Danas ću vas pokušati naučiti malo o Shift registrima. Ovo su prilično važan dio Arduinog programiranja, u osnovi jer proširuju broj izlaza koje možete koristiti, u zamjenu za ... Čitaj više za kontrolu LED dioda, mada to nije potrebno za ovaj projekt, jer Arduino ima dovoljno pinova.

Izgradite plan

Težak-vitez-Rider-Led-skener-Kompletan
Ovo je vrlo jednostavan projekt. Iako može izgledati složeno od velikog broja žica, svaki je pojedini dio vrlo jednostavan. Svaka dioda (LED) koja emitira svjetlost povezana je s vlastitim Arduino pinom. To znači da se svaki LED može pojedinačno uključivati ​​i isključivati. Potenciometar je povezan s Arduino analogom u pinovima, koji će se koristiti za podešavanje brzine skenera.

Krug

Težak-vitez-Rider-krug
Spojite vanjski lijevi pin (gledajući sprijeda, s klinovima na dnu) potenciometra na zemlju. Suprotni vanjski pin spojite na + 5V. Ako ne radi ispravno, preokrenite te igle. Spojite srednji pin na Arduino analog u 2.

Spojite anodu (dugu nogu) svakog LED-a na digitalne iglice jedan do osam. Spojite katode (kratka noga) na Arduino tlo.

Kod

Napravite novu skicu i spremite je kao "knightRider". Evo koda:

const int led [] = {1,2,3,4,5,6,7,8}; // Led igle. const int totalLeds = 8; int vrijeme = 50; // Zadana postavka praznine za brzinu () {// Inicijalizirajte sve izlaze za (int i = 0; i <= ukupnoLeds; ++ i) {pinMode (vodi [i], IZLAZ); } } void petlja () {for (int i = 0; i  0; --i) {// Skeniraj udesno lijevo vrijeme = analogRead (2); digitalWrite (led [i], HIGH); vrijeme odgode); digitalWrite (led [i - 1], HIGH); vrijeme odgode); digitalWrite (daje [i], LOW); } }

Rastavimo ga. Svaki LED pin spremljen je u nizu:

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

Niz je u osnovi zbirka povezanih predmeta. Ovi su elementi definirani kao konstantni ("const"), što znači da se kasnije ne mogu mijenjati. Ne morate koristiti konstantu (kôd će savršeno raditi ako uklonite „const“), iako se preporučuje.

Elementima matrice pristupa se pomoću kvadratnih zagrada („[]“) i cijelog broja koji se zove indeks. Indeksi počinju od nule, pa bi "led [2]" vratio treći element u nizu - pin 3. Nizovi čine kôd bržim za pisanje i lakšim za čitanje, čine da računalo čini težak posao!

A for petlja koristi se za postavljanje svakog pina kao izlaza:

za (int i = 0; i <= ukupnoLeds; ++ i) {pinMode (vodi [i], IZLAZ); }

Ovaj se kôd nalazi u funkciji "setup ()" jer se pri pokretanju programa mora pokrenuti samo jednom. Za petlje su vrlo korisne. Omogućuju vam ponavljanje istog koda iznova i iznova, s različitim vrijednostima svaki put. Savršeni su za rad s nizovima. Deklariran je cijeli broj "i", a samo kôd unutar petlje može pristupiti toj varijabli (to je poznato kao "područje"). Vrijednost i počinje od nule, a za svaku ponavljanje petlje i povećava se za jedan. Jednom kada je vrijednost i manja ili jednaka varijabli "totalLeds", petlja se "probija" (zaustavlja).

Vrijednost i koristi se za pristup polju "led". Ova petlja pristupa svakom elementu u polju i konfigurira ga kao izlaz. Možete ručno upisati "pinMode (pin, OUTPUT)" osam puta, ali zašto napisati osam redaka kad možete napisati tri?

Iako vam neki programski jezici mogu reći koliko je elemenata u nizu (obično sa sintaksom poput array.length), Arduino to ne čini tako jednostavnim (uključuje malo više matematike). Kako je već poznat broj elemenata u nizu, to nije problem.

Težak-vitez-Rider-kontrolna

Unutar glavne petlje (void petlja ()) su dvije daljnje za petlje. Prvi uključuje LED žarulje UKLJUČENO, a zatim isključuje 1 - 8. Druga petlja postavlja LED žarulje UKLJUČENO, a zatim isključuje 8 - 1. Opazite kako je uključen trenutni pin, a uključen je i trenutni pin plus jedan. To osigurava da su uvijek dva LED-a istovremeno istovremeno, skener izgleda realističnije.

Na početku svake petlje, vrijednost lonca se očitava u varijabli "vrijeme":

vrijeme = analogno čitanje (2);

To se radi dva puta, jednom unutar svake petlje. To treba stalno provjeravati i ažurirati. Ako se to nalazi izvan petlje, i dalje bi radilo, ali bilo bi malo kašnjenja - pokrenulo bi se samo nakon što petlja završi izvršenje. Posude su analogne, stoga se upotrebljava "analogRead (pin)". Vraća vrijednosti između nule (minimalno) i 1023 (maksimalno). Arduino može pretvoriti te vrijednosti u nešto korisnije, no savršene su za ovaj slučaj upotrebe.

Kašnjenje između promjena LED-ova (ili brzina skenera) postavlja se u milisekundama (1/1000 sekundi), tako da je maksimalno vrijeme nešto više od 1 sekunde.

Napredni skener

Arduino-LED diode-Izvan-parovi

Sada kada znate osnove, pogledajmo nešto složenije. Ovaj će skener osvjetljavati LED-ove u parovima počevši od vanjske strane i radeći unutra. Zatim će ovo preokrenuti i preći iznutra u vanjske parove. Evo koda:

const int led [] = {1,2,3,4,5,6,7,8}; // Led igle. const int totalLeds = 8; const int halfLeds = 4; int vrijeme = 50; // Zadana postavka praznine za brzinu () {// Inicijalizirajte sve izlaze za (int i = 0; i <= ukupnoLeds; ++ i) {pinMode (vodi [i], IZLAZ); } } void petlja () {for (int i = 0; i  0; --i) {// Skeniraj unutar parova out = vrijemeReadRead (2); digitalWrite (led [i], HIGH); digitalWrite (led [(totalLeds - i) - 1], HIGH); vrijeme odgode); digitalWrite (daje [i], LOW); digitalWrite (led [(totalLeds - i) - 1], LOW); vrijeme odgode); } }

Ovaj je kod malo složeniji. Opazite kako obje petlje idu od nule do "halfLeds - 1" (3). To čini bolji skener. Ako bi obje petlje imale 4 - 0 i 0 - 4, tada bi iste LED lampice bljesnule dvaput u istom slijedu - to ne bi izgledalo vrlo dobro.

Sada biste trebali posjedovati radni Knight Rider LED skener! To bi bilo lako izmijeniti za upotrebu više ili većih LED-ova ili za implementaciju vlastitog uzorka. Ovaj se krug vrlo lako prenosi na Raspberry Pi (novo za Pi? Započni ovdje Raspberry Pi: Neslužbeni udžbenikBez obzira jeste li trenutni vlasnik Pi-a koji želi naučiti više ili ste potencijalni vlasnik ovog uređaja veličine kartice, ovo nije vodič koji želite propustiti. Čitaj više ) ili ESP8266 Upoznajte Arduino ubojicu: ESP8266Što ako vam kažem da postoji Arduino kompatibilna ploča s ugrađenim Wi-Fi-jem za manje od 10 dolara? Pa, postoji. Čitaj više .

Gradite li repliku KITT? Voljela bih vidjeti sve stvari Knight Rider u komentarima.

Joe je diplomski studij informatike na Sveučilištu u Lincolnu u Velikoj Britaniji. On je profesionalni programer softvera, a kad ne leti dronovima ili piše glazbu, često ga mogu naći fotografirati ili snimati videozapise.