Werbung
Wünschten Sie sich jemals, Sie hätten Ihr eigenes Knight Industries Two Thousand (KITT) Auto - wissen Sie, von Knight Rider? Machen Sie Ihren Traum der Realität einen Schritt näher, indem Sie einen LED-Scanner bauen! Hier ist das Endergebnis:
Was du brauchst
Für dieses Projekt werden nicht viele Teile benötigt, und möglicherweise haben Sie bereits viele davon:
- 1 x Arduino UNO oder ähnlich
- 1 x Steckbrett
- 8 x rote LEDs
- 8 x 220 Ohm Widerstände
- 1 x 10k Ohm Potentiometer
- Anschlussdrähte von Stecker zu Stecker
Wenn Sie eine haben Arduino Starter Kit Was ist in einem Arduino Starter Kit enthalten? [MakeUseOf erklärt]Ich habe die Open-Source-Hardware von Arduino bereits hier auf MakeUseOf vorgestellt, aber Sie benötigen mehr als nur das eigentliche Arduino, um daraus etwas aufzubauen und loszulegen. Arduino "Starter Kits" sind ... Weiterlesen Es ist wahrscheinlich, dass Sie alle diese Teile haben (Was kann man mit einem Starter-Kit machen? 5 einzigartige Arduino-Projekte für Anfänger, die Sie mit nur einem Starter-Kit erstellen können Weiterlesen ).
Fast jedes Arduino funktioniert, vorausgesetzt, es verfügt über acht verfügbare Pins (Noch nie ein Arduino verwendet? Fang hier an Erste Schritte mit Arduino: Ein Leitfaden für AnfängerArduino ist eine Open-Source-Plattform für das Prototyping von Elektronik, die auf flexibler, benutzerfreundlicher Hardware und Software basiert. Es richtet sich an Künstler, Designer, Bastler und alle, die interaktive Objekte oder Umgebungen erstellen möchten. Weiterlesen ). Du könntest Verwenden Sie ein Schieberegister Arduino-Programmierung - Spielen mit Schieberegistern (a.k.a. noch mehr LEDs)Heute werde ich versuchen, Ihnen ein wenig über Schieberegister beizubringen. Dies ist ein ziemlich wichtiger Teil der Arduino-Programmierung, im Grunde genommen, weil sie die Anzahl der Ausgänge erhöhen, die Sie im Austausch für ... Weiterlesen zur Steuerung der LEDs, obwohl dies für dieses Projekt nicht benötigt wird, da der Arduino über genügend Pins verfügt.
Bauplan
Dies ist ein sehr einfaches Projekt. Obwohl es aufgrund der großen Anzahl von Drähten komplex aussehen mag, ist jedes einzelne Teil sehr einfach. Jede Leuchtdiode (LED) ist mit ihrem eigenen Arduino-Pin verbunden. Dies bedeutet, dass jede LED einzeln ein- und ausgeschaltet werden kann. Ein Potentiometer ist in Stiften mit dem Arduino-Analog verbunden, mit dem die Geschwindigkeit des Scanners eingestellt wird.
Die Rennbahn
Verbinden Sie den äußeren linken Stift (nach vorne schauend, mit den Stiften unten) des Potentiometers mit Masse. Verbinden Sie den gegenüberliegenden äußeren Stift mit + 5V. Wenn es nicht richtig funktioniert, vertauschen Sie diese Stifte. Verbinden Sie den mittleren Pin mit Arduino Analog in 2.
Verbinden Sie die Anode (langes Bein) jeder LED mit den digitalen Pins eins bis acht. Verbinden Sie die Kathoden (kurzes Bein) mit Arduino Ground.
Der Code
Erstellen Sie eine neue Skizze und speichern Sie sie als "knightRider". Hier ist der Code:
const int leds [] = {1,2,3,4,5,6,7,8}; // LED-Stifte. const int totalLeds = 8; int time = 50; // Standardgeschwindigkeit void setup () {// Alle Ausgaben für (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i 0; --i) {// Zeit von rechts nach links scannen = analogRead (2); digitalWrite (LEDs [i], HIGH); Verzögerungszeit); digitalWrite (LEDs [i - 1], HIGH); Verzögerungszeit); digitalWrite (LEDs [i], LOW); } }
Lassen Sie es uns zusammenfassen. Jeder LED-Pin ist in einem Array gespeichert:
const int leds [] = {1,2,3,4,5,6,7,8};
Ein Array ist im Wesentlichen eine Sammlung verwandter Elemente. Diese Elemente werden als Konstante („const“) definiert, was bedeutet, dass sie später nicht mehr geändert werden können. Sie müssen keine Konstante verwenden (der Code funktioniert einwandfrei, wenn Sie "const" entfernen), obwohl dies empfohlen wird.
Auf Elemente eines Arrays wird mit eckigen Klammern („[]“) und einer Ganzzahl namens Index zugegriffen. Indizes beginnen bei Null, sodass „leds [2]“ das dritte Element im Array zurückgeben würde - Pin 3. Mit Arrays lässt sich Code schneller schreiben und leichter lesen. Der Computer erledigt die harte Arbeit!
Eine for-Schleife wird verwendet, um jeden Pin als Ausgang einzurichten:
für (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); }
Dieser Code befindet sich in der Funktion „setup ()“, da er zu Beginn des Programms nur einmal ausgeführt werden muss. For-Schleifen sind sehr nützlich. Mit ihnen können Sie denselben Code immer wieder mit jeweils einem anderen Wert ausführen. Sie eignen sich perfekt für die Arbeit mit Arrays. Eine Ganzzahl "i" wird deklariert, und nur Code innerhalb der Schleife kann auf diese Variable zugreifen (dies wird als "Bereich" bezeichnet). Der Wert von i beginnt bei Null und für jede Iteration der Schleife wird i um eins erhöht. Sobald der Wert von i kleiner oder gleich der Variablen "totalLeds" ist, "bricht" die Schleife (stoppt).
Der Wert von i wird verwendet, um auf das Array "leds" zuzugreifen. Diese Schleife greift auf jedes Element im Array zu und konfiguriert es als Ausgabe. Sie könnten "pinMode (pin, OUTPUT)" achtmal manuell eingeben, aber warum acht Zeilen schreiben, wenn Sie drei schreiben können?
Während einige Programmiersprachen Ihnen sagen können, wie viele Elemente sich in einem Array befinden (normalerweise mit einer Syntax wie array.length), macht Arduino es nicht so einfach (es erfordert etwas mehr Mathematik). Da die Anzahl der Elemente im Array bereits bekannt ist, ist dies kein Problem.
Innerhalb der Hauptschleife (void loop ()) sind zwei weitere for-Schleifen. Zuerst werden die LEDs von 1 bis 8 ein- und dann ausgeschaltet. Die zweite Schleife setzt die LEDs von 8 - 1 ein und dann aus. Beachten Sie, wie der aktuelle Pin eingeschaltet ist und der aktuelle Pin plus eins ebenfalls eingeschaltet ist. Dadurch wird sichergestellt, dass immer zwei LEDs gleichzeitig leuchten, sodass der Scanner realistischer aussieht.
Zu Beginn jeder Schleife wird der Wert des Topfes in die Variable "Zeit" eingelesen:
Zeit = analogRead (2);
Dies erfolgt zweimal, einmal in jeder Schleife. Dies muss ständig überprüft und aktualisiert werden. Wenn dies außerhalb der Schleifen wäre, würde es immer noch funktionieren, es würde jedoch eine kleine Verzögerung geben - es würde nur ausgeführt, sobald eine Schleife ausgeführt wurde. Töpfe sind analog, daher wird „analogRead (Pin)“ verwendet. Dies gibt Werte zwischen Null (Minimum) und 1023 (Maximum) zurück. Arduino ist in der Lage, diese Werte in etwas Nützlicheres umzuwandeln, sie sind jedoch perfekt für diesen Anwendungsfall.
Die Verzögerung zwischen dem Wechseln der LEDs (oder der Geschwindigkeit des Scanners) wird in Millisekunden (1/1000 Sekunde) eingestellt, sodass die maximale Zeit etwas mehr als 1 Sekunde beträgt.
Erweiterter Scanner
Nachdem Sie die Grundlagen kennen, schauen wir uns etwas Komplexeres an. Dieser Scanner beleuchtet die LEDs paarweise von außen und innen. Es wird dies dann umkehren und von innen nach außen paarweise gehen. Hier ist der Code:
const int leds [] = {1,2,3,4,5,6,7,8}; // LED-Stifte. const int totalLeds = 8; const int halfLeds = 4; int time = 50; // Standardgeschwindigkeit void setup () {// Alle Ausgaben für (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i 0; --i) {// Innenpaare scannen out time = analogRead (2); digitalWrite (LEDs [i], HIGH); digitalWrite (leds [(totalLeds - i) - 1], HIGH); Verzögerungszeit); digitalWrite (LEDs [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], LOW); Verzögerungszeit); } }
Dieser Code ist etwas komplexer. Beachten Sie, wie beide Schleifen von Null auf „halfLeds - 1“ (3) gehen. Dies macht einen besseren Scanner. Wenn beide Schleifen von 4 - 0 und 0 - 4 gehen würden, würden dieselben LEDs zweimal in derselben Reihenfolge blinken - dies würde nicht sehr gut aussehen.
Sie sollten jetzt einen funktionierenden Knight Rider LED-Scanner besitzen! Es wäre einfach, dies zu ändern, um mehr oder größere LEDs zu verwenden oder ein eigenes Muster zu implementieren. Diese Schaltung ist sehr einfach an eine zu portieren Himbeer-Pi (neu bei Pi? Fang hier an Raspberry Pi: Das inoffizielle TutorialEgal, ob Sie ein aktueller Pi-Besitzer sind, der mehr erfahren möchte, oder ein potenzieller Besitzer dieses Geräts in Kreditkartengröße, dies ist kein Leitfaden, den Sie verpassen sollten. Weiterlesen ) oder ESP8266 Lernen Sie den Arduino Killer kennen: ESP8266Was wäre, wenn ich Ihnen sagen würde, dass es ein Arduino-kompatibles Entwicklungsboard mit integriertem WLAN für weniger als 10 US-Dollar gibt? Nun, das gibt es. Weiterlesen .
Bauen Sie eine Replik KITT? Ich würde gerne alle Dinge von Knight Rider in den Kommentaren sehen.
Joe hat einen Abschluss in Informatik von der University of Lincoln, UK. Er ist ein professioneller Softwareentwickler, und wenn er keine Drohnen fliegt oder Musik schreibt, macht er oft Fotos oder produziert Videos.