Hirdetés
Valaha azt kívánta, hogy legyen saját Knight Industries kétezer (KITT) autója - tudod, a Knight Rider-től? Tegye álmát egy lépéssel közelebb a valósághoz egy LED-szkenner építésével! Íme a végeredmény:
Amire szükséged van
Ehhez a projekthez nem sok alkatrészre van szükség, és valószínűleg sok ilyen is van:
- 1 x Arduino UNO vagy hasonló
- 1 x kenyérvágódeszka
- 8 x piros LED
- 8 x 220 ohm ellenállások
- 1 x 10 k ohm potenciométer
- Férfi-férfi csatlakoztassa a vezetékeket
Ha van Arduino indítókészlet Mit tartalmaz egy Arduino kezdőkészlet? [MakeUseOf magyarázat]Korábban már bemutattam az Arduino nyílt forráskódú hardvert itt a MakeUseOf-on, de nemcsak a tényleges Arduino-ra van szükséged, hogy valamit beépítsen belőle, és valóban elinduljon. Az Arduino "indítókészletek" ... Olvass tovább valószínű, hogy megvan ezek a részek (mit tehetsz egy indítókészlettel? 5 egyedi Arduino projekt kezdőknek, amelyeket csak kezdőkészlettel készíthet Olvass tovább ).
Szinte minden Arduino működni fog, feltéve, hogy nyolc elérhető csapszeggel rendelkezik (Soha nem használtam Arduino-t?
Kezdje el itt Az Arduino használatának első lépése: Útmutató kezdőknekAz Arduino egy nyílt forráskódú elektronikai prototípus-létrehozási platform, amely rugalmas, könnyen használható hardveren és szoftveren alapul. Művészeknek, tervezőknek, amatőröknek és interaktív tárgyak vagy környezetek létrehozásának érdeklődőinek szánták. Olvass tovább ). Te tudnál használja a Shift regisztert Arduino programozás - Játsszon sebességváltó regiszterekkel (a.k.a még több LED)Ma megpróbállak egy kicsit megtanítani neked a Shift Nyilvántartásokat. Ezek meglehetősen fontos részét képezik az Arduino programozásnak, alapvetően azért, mert növelik a felhasználható kimenetek számát, cserébe ... Olvass tovább a LED-ek vezérlésére, bár erre nincs szükség ehhez a projekthez, mivel az Arduinónak van elég csapja.Építési terv
Ez egy nagyon egyszerű projekt. Bár a vezetékek nagy száma bonyolultnak tűnik, az egyes részek nagyon egyszerűek. Minden fénykibocsátó diódát (LED) a saját Arduino tűjéhez csatlakoztatnak. Ez azt jelenti, hogy minden LED külön-külön be- és kikapcsolható. Egy potenciométer csatlakozik az Arduino analóghoz csapokban, amely a szkenner sebességének beállítására szolgál.
Az áramkör
Csatlakoztassa a potenciométer bal oldali külső csapját (elölről nézve, az alsó csapokkal) a földhöz. Csatlakoztassa az ellenkező külső csapot a + 5v-hez. Ha nem működik megfelelően, fordítsa meg ezeket a csapokat. Csatlakoztassa a középső csapot az Arduino analóghoz a 2-es helyzetben.
Csatlakoztassa az egyes LED-ek anódját (hosszú lábát) a digitális csapokhoz egytől nyolcig. Csatlakoztassa a katódokat (rövid láb) az Arduino földhöz.
A kód
Készítsen új vázlatot, és mentse el „knightRider” néven. Íme a kód:
const int led-ek [] = {1,2,3,4,5,6,7,8}; // Led csapok. const int totalLeds = 8; int idő = 50; // Alapértelmezett sebesség érvénytelen beállítás () {// Inicializálja az összes kimenetet (int i = 0; i <= totalLeds; ++ i) {pinMode (LED-ek [i], OUTPUT); } } void loop () {mert (int i = 0; i 0; --i) {// jobbról balra szkennelés = analogRead (2); digitalWrite (LED-ek [i], HIGH); késési idő); digitalWrite (LED-ek [i - 1], HIGH); késési idő); digitalWrite (LED-ek [i], LOW); } }
Lebontjuk. Minden LED-es tűt tömbben tárolnak:
const int led-ek [] = {1,2,3,4,5,6,7,8};
A tömb lényegében kapcsolódó elemek gyűjteménye. Ezeket az elemeket állandónak („const”) definiálják, ami azt jelenti, hogy később nem változtathatók meg. Nem kell állandót használni (a kód tökéletesen fog működni, ha eltávolítja a „const” -t), bár ez ajánlott.
A tömb elemeihez szögletes zárójelek („[]”) és egy egész néven mutató index segítségével lehet hozzáférni. Az indexek nullánál kezdõdnek, tehát a „led [2]” a tömb harmadik elemét adja vissza - a 3. tüskét. A tömbök gyorsabbá teszik a kód írását és könnyebben olvashatóvá teszik a számítógépet a kemény munka elvégzéséhez!
Az A for hurok használatával az összes tűt kimenetként állítják be:
for (int i = 0; i <= totalLeds; ++ i) {pinMode (LED-ek [i], OUTPUT); }
Ez a kód a „setup ()” funkcióban található, mivel csak a program elején kell futtatnia. A hurkok nagyon hasznosak. Ezek lehetővé teszik, hogy újra és újra futtassa ugyanazt a kódot, minden alkalommal eltérő értékkel. Kiválóan alkalmasak tömbökkel való munkához. Az „i” egész szám deklarálva van, és csak a hurokban található kód férhet hozzá ehhez a változóhoz (ezt „hatókörnek” nevezzük). I értéke nullánál kezdődik, és a hurok minden egyes iterációja esetén i-vel egyre növekszik. Ha i értéke kisebb vagy egyenlő a „totalLeds” változóval, a hurok „megszakad” (leáll).
Az i érték a „led” tömb eléréséhez használható. Ez a hurok hozzáfér a tömb minden eleméhez, és kimenetként konfigurálja. Kézzel írhatott kézzel a „pinMode (pin, OUTPUT)” gombbal, de miért írjon nyolc sort, ha három írhat?
Míg néhány programozási nyelv megmondja, hány elem van egy tömbben (általában szintaxissal, például array.length), Arduino nem teszi ezt olyan egyszerűvé (kicsit több matematikát foglal magában). Mivel a tömb elemeinek száma már ismert, ez nem jelent problémát.
A fő hurok belsejében (üres hurok ()) két további a hurkokhoz. Az első a LED-eket bekapcsolja, majd 1 és 8 között kikapcsolja. A második hurok a LED-eket bekapcsolja, majd kikapcsolja 8 - 1 között. Figyelje meg, hogy az aktuális tű be van-e kapcsolva, és az aktuális tű és az egyet be van-e kapcsolva. Ez biztosítja, hogy mindig két LED világítson egyszerre, ezáltal a szkenner reálisabbnak tűnik.
Minden hurok elején a bank értékét be kell olvasni az „idő” változóba:
time = analogRead (2);
Ezt kétszer megtesszük, egyszer minden hurkon belül. Ezt folyamatosan ellenőrizni és frissíteni kell. Ha ez a hurkokon kívül lenne, akkor is működni fog, bár lenne egy kis késés - csak akkor futna, ha a hurok végrehajtása befejeződött. Az edények analógok, ezért miért használják az „analogRead (pin)”. Ez visszaadja az értékeket nulla (minimum) és 1023 (maximális) között. Az Arduino képes ezeket az értékeket valami hasznosabbá konvertálni, ám ezek a felhasználási esetek tökéletesen alkalmazhatók.
A LED-ek cseréje (vagy a szkenner sebessége) közötti késleltetést milliszekundumban (1/1000 másodperc) állítják be, tehát a maximális idő alig több mint 1 másodperc.
Speciális szkenner
Most, hogy megismeri az alapokat, nézzünk valami összetettebbre. Ez a szkenner párosan világít a LED-eket, kívülről kezdve és bekapcsolva. Ezután ezt megfordítja, és belülről és kívülről párra lép. Íme a kód:
const int led-ek [] = {1,2,3,4,5,6,7,8}; // Led csapok. const int totalLeds = 8; const int halfLeds = 4; int idő = 50; // Alapértelmezett sebesség érvénytelen beállítás () {// Inicializálja az összes kimenetet (int i = 0; i <= totalLeds; ++ i) {pinMode (LED-ek [i], OUTPUT); } } void loop () {mert (int i = 0; i 0; --i) {// A páros szkennelés ideje = analogRead (2); digitalWrite (LED-ek [i], HIGH); digitalWrite (LED-ek [(totalLeds - i) - 1], HIGH); késési idő); digitalWrite (LED-ek [i], LOW); digitalWrite (LED-ek [(totalLeds - i) - 1], LOW); késési idő); } }
Ez a kód kissé összetettebb. Vegye figyelembe, hogy mindkét hurok nulláról nullára vált a „halfLeds - 1” értékre (3). Ez jobb szkennert eredményez. Ha mindkét hurok 4 - 0 és 0 - 4 között mozog, akkor ugyanazok a LED - ek kétszer villognak ugyanabban a sorrendben - ez nem tűnik túl jól.
Mostantól a működő Knight Rider LED szkenner tulajdonosa lehet! Könnyű lenne ezt módosítani több vagy nagyobb LED-ek használatához vagy a saját mintájának megvalósításához. Ezt az áramkört nagyon könnyű portolni a Raspberry Pi (új vagy Pi-nak? Kezdd itt Raspberry Pi: A nem hivatalos bemutatóLegyen szó jelenlegi Pi tulajdonosról, aki többet szeretne megtudni, vagy ennek a hitelkártya méretű eszköznek a lehetséges tulajdonosai, ez nem egy útmutató, amelyet hiányozni szeretne. Olvass tovább ) vagy ESP8266 Ismerje meg az Arduino gyilkosát: ESP8266Mi lenne, ha azt mondanám neked, hogy van egy Arduino-kompatibilis fejlesztődeszka beépített Wi-Fi-vel kevesebb, mint 10 dollárért? Nos, van. Olvass tovább .
KITT másolatot épít? Szeretném, ha a Knight Rider mindent látná a megjegyzésekben.
Joe számítógépes ismeretek diplomáját szerezte az Egyesült Királyság Lincolni Egyetemen. Professzionális szoftverfejlesztő, és amikor nem repül drónokkal és nem ír zenét, gyakran találkozhat fényképezéssel vagy videó készítésével.