Lav en Knight Rider LED-scanner med Arduino

  • Owen Little
  • 0
  • 1412
  • 105
Reklame

Nogensinde ønsket, at du havde din egen Knight Industries To Thousand (KITT) bil - ved du fra Knight Rider? Gør din drøm et skridt tættere på virkeligheden ved at bygge en LED-scanner! Her er slutresultatet:

Hvad du har brug for

Der er ikke mange dele til dette projekt, og du har måske allerede mange af dem:

  • 1 x Arduino UNO eller lignende
  • 1 x Breadboard
  • 8 x røde lysdioder
  • 8 x 220 ohm-modstande
  • 1 x 10 k ohm potentiometer
  • Han-til-mand tilslutter ledninger

Hvis du har et Arduino-startkit, hvad er der inkluderet i et Arduino-startkit? [MakeUseOf Explains] Hvad er der inkluderet i et Arduino Starter Kit? [MakeUseOf forklarer] Jeg har tidligere introduceret Arduino open source-hardware her på MakeUseOf, men du har brug for mere end bare den faktiske Arduino for at bygge noget ud af det og faktisk komme i gang. Arduino "starter sæt" er ... det er sandsynligt, at du har alle disse dele (hvad kan du lave med et startkit? 5 unikke Arduino-projekter til begyndere, du kan lave med bare et startkit 5 Unikke Arduino-projekter til begyndere, du kan lave med bare et startkit).

Næsten enhver Arduino vil fungere, forudsat at den har otte tilgængelige stifter (Har du aldrig brugt en Arduino før? Kom i gang her Kom godt i gang med Arduino: En begynderguide Kom godt i gang med Arduino: En begynderguide Arduino er en open source-elektronisk prototype-platform baseret på fleksibel , brugervenlig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og enhver, der er interesseret i at skabe interaktive objekter eller miljøer.) Du kan bruge et skiftregister Arduino-programmering - leg med skiftregistre (a.k.a endnu flere lysdioder) Arduino-programmering - leg med skiftregistre (a.k.a endnu flere lysdioder) I dag vil jeg forsøge at lære dig lidt om skiftregistre. Dette er en forholdsvis vigtig del af Arduino-programmeringen, dybest set fordi de udvider antallet af output, du kan bruge, til gengæld for ... at kontrollere LED'erne, selvom dette ikke er nødvendigt til dette projekt, da Arduino har nok stifter.

Byg plan


Dette er et meget simpelt projekt. Selvom det kan se kompliceret ud fra det store antal ledninger, er hver enkelt del meget enkel. Hver lysemitterende diode (LED) er tilsluttet sin egen Arduino-pin. Dette betyder, at hver LED kan tændes og slukkes individuelt. Et potentiometer er forbundet til Arduino-analogen i stifter, som vil blive brugt til at justere hastigheden på scanneren.

Kredsløbet


Forbind den udvendige venstre pin (ser på fronten, med stifterne i bunden) af potentiometeret til jorden. Tilslut den modsatte ydre pin til + 5v. Hvis det ikke fungerer korrekt, skal du vende disse stifter tilbage. Tilslut den midterste pin til Arduino-analog i 2.

Forbind anoden (langbenet) på hver LED til digitale stifter en til otte. Forbind katoderne (korte ben) til Arduino-jorden.

Koden

Opret en ny skitse og gem den som “ridder”. Her er koden:

const int leds [] = 1,2,3,4,5,6,7,8; // Ledstifter const int totalLeds = 8; int-tid = 50; // Standard hastighed for ugyldig opsætning () // Initialiser alle udgange til (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i  0; --i) // Scan højre til venstre tid = analoglæse (2); digitalWrite (lysdioder [i], HØJ); forsinkelse); digitalWrite (lysdioder [i - 1], HØJ); forsinkelse); digitalWrite (leds [i], LAV); 

Lad os nedbryde det. Hver LED-pin er gemt i en matrix:

const int leds [] = 1,2,3,4,5,6,7,8;

En matrix er hovedsageligt en samling af relaterede genstande. Disse elementer defineres som konstante (“konst”), hvilket betyder, at de ikke kan ændres senere. Du behøver ikke at bruge en konstant (koden fungerer perfekt, hvis du fjerner “konst”), selvom det anbefales.

Elementerne i en matrix er tilgængelige ved hjælp af firkantede parenteser (“[]”) og et heltal kaldet et indeks. Indekser starter ved nul, så “leds [2]” ville returnere det tredje element i array - pin 3. Arrays gør koden hurtigere at skrive og lettere at læse, de får computeren til at gøre det hårde arbejde!

En for loop bruges til at opsætte hver pin som en output:

for (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT); 

Denne kode er inde i “Opsætning()” funktion, da den kun skal køres én gang ved programstart. For sløjfer er meget nyttige. De giver dig mulighed for at køre den samme kode igen og igen med en anden værdi hver gang. De er perfekte til at arbejde med matriser. Et heltal “jeg” er erklæret, og kun kode inde i løkken har adgang til denne variabel (dette kaldes “anvendelsesområde”). Værdien af ​​i starter ved nul, og for hver iteration af løkken forøges i med en. Når værdien af ​​i er mindre end eller lig med “totalLeds” variabel, løkken “pauser” (stopper).

Værdien af ​​i bruges til at få adgang til “leds” array. Denne loop giver adgang til hvert element i arrayet og konfigurerer det som en output. Du kan skrive manuelt “pinMode (pin, OUTPUT)” otte gange, men hvorfor skrive otte linjer, når du kan skrive tre?

Mens nogle programmeringssprog kan fortælle dig, hvor mange elementer der er i en matrix (normalt med syntaks som array.length), gør Arduino det ikke så enkelt (det involverer lidt mere matematik). Da antallet af elementer i matrixen allerede er kendt, er det ikke et problem.

Inde i hovedsløjfen (void loop ()) er to yderligere til løkker. Den første sætter lysdioderne TIL og derefter FRA fra 1 - 8. Den anden sløjfe sætter lysdioderne TIL og derefter slukket fra 8 - 1. Bemærk, hvordan den aktuelle pin er tændt, og den aktuelle pin plus en er også tændt. Dette sikrer, at der altid er to lysdioder tændt på samme tid, så scanneren ser mere realistisk ud.

Ved starten af ​​hver løkke læses potens værdi ind i “tid” variabel:

tid = analoglæse (2);

Dette gøres to gange, én gang inden i hver løkke. Dette skal konstant kontrolleres og opdateres. Hvis dette var uden for sløjferne, ville det stadig fungere, men der ville være en lille forsinkelse - det ville kun køre, når en løkke er færdig med at udføre. Gryder er analoge, hvorfor “analogRead (pin)” anvendes. Dette returnerer værdier mellem nul (minimum) og 1023 (maksimum). Arduino er i stand til at konvertere disse værdier til noget mere nyttigt, men de er perfekte til denne brugssag.

Forsinkelsen mellem skiftende lysdioder (eller scannerens hastighed) indstilles i millisekunder (1/1000 sekund), så den maksimale tid er lidt over 1 sekund.

Avanceret scanner

Nu hvor du kender det grundlæggende, lad os se på noget mere komplekst. Denne scanner vil tænde lysdioderne i par, der starter udefra og arbejder i. Den vil derefter vende dette og gå fra indersiden til udvendige par. Her er koden:

const int leds [] = 1,2,3,4,5,6,7,8; // Ledstifter const int totalLeds = 8; const int halfLeds = 4; int-tid = 50; // Standard hastighed for ugyldig opsætning () // Initialiser alle udgange til (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i <(halfLeds - 1); ++i)  // Scan outside pairs in time = analogRead(2); digitalWrite(leds[i], HIGH); digitalWrite(leds[(totalLeds - i) - 1], HIGH); delay(time); digitalWrite(leds[i], LOW); digitalWrite(leds[(totalLeds - i) - 1], LOW); delay(time);  for(int i = (halfLeds - 1); i> 0; --i) // Scan inden i par ud-tid = analoglæse (2); digitalWrite (lysdioder [i], HØJ); digitalWrite (leds [(totalLeds - i) - 1], HIGH); forsinkelse); digitalWrite (leds [i], LAV); digitalWrite (leds [(totalLeds - i) - 1], LOW); forsinkelse); 

Denne kode er lidt mere kompleks. Bemærk, hvordan begge sløjfer går fra nul til “halfLeds - 1” (3). Dette gør en bedre scanner. Hvis begge sløjfer gik fra 4 - 0 og 0 - 4, ville de samme lysdioder blinke to gange i samme rækkefølge - dette ville ikke se meget godt ud.

Du skal nu eje en fungerende Knight Rider LED-scanner! Det ville være let at ændre dette for at bruge flere eller større LED'er eller implementere dit eget mønster. Dette kredsløb er meget let at overføre til en Raspberry Pi (ny hos Pi? Start her Raspberry Pi: Den uofficielle tutorial Raspberry Pi: Den uofficielle tutorial Uanset om du er en nuværende Pi-ejer, der vil lære mere eller en potentiel ejer af denne kredit -kortstørrelse, dette er ikke en guide, du vil gå glip af.) eller ESP8266 Mød Arduino Killer: ESP8266 Mød Arduino Killer: ESP8266 Hvad hvis jeg fortalte dig, at der er et Arduino-kompatibelt dev-bord med indbygget Wi- Fi for mindre end $ 10? Det er der. .

Bygger du en kopi-KITT? Jeg vil meget gerne se alle ting Knight Rider i kommentarerne.




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.