Schritt 12: NeoPixel Stick
Da ein ungeschriebenes Gesetz ist, dass Arduino Projekte widerlich LEDs (kleiner Scherz!) haben sollte, habe ich einen NeoPixel Stick auf das Auto. NeoPixels sind eine Art von Futter adressierbare RGB LED von AdaFruit produziert, und der NeoPixel-Stick hat 8 adressierbare LEDs auf einer kompakten Platine. Der Stick benötigt eine Drittanbieter-Arduino-Bibliothek (https://github.com/adafruit/Adafruit_NeoPixel) zu arbeiten, aber es ist ziemlich einfach zu konfigurieren (Hardware und Software). Ich verlötet auf einige weibliche Header, so dass ich es mit 22AWG festen Kern Draht herstellen konnte.
Die Leuchten sind mit dem XBox 360 Controller gesteuert. Die Taste "Y" schaltet den Stick NeoPixel ein-/ausschalten. Die DPad steuert die Helligkeit und "Sequenz". Die Helligkeit wird gesteuert durch nach oben/unten auf dem DPad und Sequenz ist DPad links/rechts. Die Reihenfolge bezieht sich auf die vorprogrammierte Modi für den NeoPixel-Stick konfiguriert.
Die Liste der Sequenzen in der aktuellen Softwareversion ist:
Folge 0: Alle LEDs setzen auf (einstellbaren Helligkeit) weiß
Sequenz 1: Alle LEDs rot (einstellbar Helligkeit)
Sequenz 2: Alle LEDs setzen auf grün (einstellbaren Helligkeit)
Sequenz 3: Alle LEDs blau (einstellbaren Helligkeit) festgelegt
Sequenz 4: Warnblinkanlage - Ende LEDs blinken orange
Sequenz 5: Polizei Modus - Ende LEDs blinken rot/blau (verwenden Sie diese auf einer Straße in der Nacht, Haha)
Folge 6: Pulsierend/verblassen grüne LEDs
Sequenz 7: Knight Rider-Modus (rot)
Sequenz 8: Knight Rider-Modus (blau)
Sequenz 9: Leere Sequenz, derzeit festgelegt, weiß (Helligkeit einstellbar)
Der c#-Programm sendet NeoPixel Anweisungen an den Arduino mit einem 3 Character-Feld in der seriellen Ausgabenachricht, z. B. "L51" das erste Zeichen steuert ein/aus (L = Lichter auf, D = off(dark)). Das zweite Zeichen ist die Helligkeit (ggf. für die Sequenz), und das letzte Zeichen ist die laufende Nummer.
Um diese Informationen zu verarbeiten, die Arduino erhält die serielle Zeichenfolge speichert die Lichterkette in ein separates 3 Zeichen-Array und dann prüft jedes Zeichen. Die NeoPixel Status wird in jeder Iteration der Hauptschleife aktualisiert.
Hinweis: Für animierte Sequenzen, wie z. B. die Warnblinkanlage und die Reihenfolge der Polizei, wurde die millis()-Funktion zur Zeit verfolgen. Die meisten NeoPixel Beispiele verwenden die delay() Funktion, aber dies nicht für das Auto verwendet werden, da es die Ausführung von anderen Code in dem Arduino zu blockieren, bis die Verzögerung abgeschlossen ist.
Anmerkung 2: Da der NeoPixel-Stick nur in jeder Iteration der Hauptschleife aktualisiert wird, ist die minimale Zeit zwischen verschiedenen NeoPixel Staaten die Verzögerung in der Hauptschleife festgelegt. Wie Sie vom seriellen Abschnitt wissen, setzt diese Verzögerung die serielle Nachricht Update-Frequenz zwischen dem Arduino und PC. Also, sehr hoher Frequenz Aktualisierungen auf den NeoPixel-Stick nicht möglich - die höchste Frequenz für die NeoPixels ist direkt an die serielle Nachricht Häufigkeit (etwa 20Hz) gebunden.