banner
Heim / Nachricht / Kontrollieren Sie sechs nicht
Nachricht

Kontrollieren Sie sechs nicht

Aug 29, 2023Aug 29, 2023

LEDs und insbesondere LED-Streifen sind eine der Top-Innovationen, die es Herstellern ermöglicht haben, eine breite Palette lustiger Leuchtobjekte zu schaffen. Diese gibt es in zwei Hauptvarianten: nicht adressierbare Farbstreifen, die ihre Farben insgesamt basierend auf (im Allgemeinen) drei PWM-Eingängen ändern; und adressierbare LED-Streifen, die eine viel detailliertere Steuerung ermöglichen, aber etwas teurer sind.

Keiner der Streifentypen wird wahrscheinlich Ihr Budget sprengen, aber wenn Sie einen dreifarbigen, nicht adressierbaren LED-Streifen mit einem ATmega328P-basierten Arduino – zum Beispiel einem Nano – verwenden möchten, müssen Sie drei davon zusammenbinden sechs PWM-Ausgangspins. Möchten Sie zwei Streifen steuern? Damit sind alle sechs Plätze besetzt, und wer mehr fahren will, hat meist kein Glück …

Oder vielleicht bist du es auch nicht. Wie im Video unten von YouTuber Trevor Makes zu sehen ist, ist es tatsächlich möglich, mit einem Arduino Nano bis zu 18 PWM-Ausgänge auszugeben, indem jeder digitale Pin (abzüglich der beiden für die serielle Steuerung verwendeten) in virtuelle PWM-Pins umgewandelt wird. Der Trick bei diesem cleveren Hack besteht darin, dass Trevors Code anstelle des normalen analogen Arduino-Schreibbefehls stattdessen die Interrupts verwendet, um kleine Codebits nacheinander auszulösen.

Das Pin-Timing ist nach dem Arbeitszyklus sortiert, und die Interrupt-Service-Routine (ISR) konfiguriert tatsächlich das nachfolgende Interrupt-Timing, während es ausgeführt wird. Auf diese Weise ist der Arduino in der Lage, eine praktisch unbegrenzte Anzahl von Software-PWM-Signalen zu erzeugen. 0 und 100 % Arbeitszyklus werden als Sonderfälle behandelt, da es sich zu diesem Zeitpunkt um einfache Binärausgänge handelt.

Was die Hardware angeht, verwendet Trevor ein Trio von ULN2003-Chips, um die aktuellen Anforderungen von jeweils zwei Streifen zu erfüllen, was seinen Beleuchtungsanforderungen elegant gerecht wird. Code und weitere Informationen zum Projekt finden Sie auf GitHub.