Vor einigen Tagen haben wir gezeigt wie man eine Laufschrift auf unserer 4x64er LED Matrix darstellen kann. Wir haben das Modul in einen PC eingebaut.
Nach heutigen Maßstäben muss aber alles im Computer RGB sein. Deswegen versuchen wir heute in unserem Blog-Beitrag eine ähnliche Laufschrift mit unseren U-64-LED-Panels zu realisieren.
Wichtiger Hinweis: die U-64-LED-Panels sind mit den weit verbreiteten und beliebten WS2812b LEDs bestückt. Eine WS2812b LED besteht dabei aus 3 kleinen LEDs (Rot, Grün und Blau) sowie einem kleinen Controller-Chip, alles in einem sehr kompakten Bauelement.
Diese RGB LEDs sind einzeln adressierbar, und sehr hell. Jede LED zieht bei voller Leuchtstärke (Rot, Grün und Blau jeweils auf maximal) ca. 50mA bei 5V.
Dies bedeutet: wenn wir nur 4 der 64 LEDs im Panel auf die maximale Helligkeit setzen, haben wir das Limit von unserem Nano V3 schon erreicht.
Anders Formuliert: Wer dieses Modul über den Arduino mit Spannung versorgt, kann sich sicher sein das dieser in absehbarer Zeit durchbrennt.
Daher ist es bei WS2812b LEDs unbedingt notwendig ein externes 5V Netzteil mit ausreichend Leistung zu benutzen.
Ich nutze für dieses Projekt ein 5V Netzteil mit 10A.
Wir verwenden in dem Projekt folgende Teile:
1x Nano V3.0 PRO, gelötete Version mit USB Kabel
1x 5V Netzteil 13+ A
1x Elektrolytkondensator 1000µF 10V
1x 220Ω Widerstand
5x 3-Pin Stiftleiste
Viele Jumperkabel. Ich empfehle das AZ-Delivery Set 3x Breadboard + 3x Jumper Wire
Ich möchte 4 Panels mit je 64 LEDs zusammenschalten, also 256 LEDs insgesamt. 256 * 50mA = 12800 mA = 12,8A.
Ich bin mir also im Klaren darüber dass ich, umssicher zu gehen dass mein Netzteil nicht in Flammen aufgeht, die Panels nicht mit voller Helligkeit betreiben sollte.
Da die Panels nicht zu den günstigsten Bauteilen gehören, empfehle ich für am Anfang nur ein Panel zu verwenden. Die Panels haben 3 Pins auf jeder Seite, und können sehr einfach durch verbunden werden.
Wir schließen das Panel wie folgt an:
Netzteil |
1000 µF 20V Elco |
Panel |
Nano V3 |
+ |
+ (langes Beinchen) |
VCC |
VIN |
- |
- (Kurzes Beinchen) |
GND |
GND |
|
|
DIN |
D5 (mit 220Ω Widerstand) |
Nachdem wir alles angeschlossen haben, und unser Netzteil einstecken, zeigt unser Panel erstmal nichts an. Wir müssen also jeder LED, also jedem Pixel einen Farbwert (Rot, Grün und Blau) sowie die Helligkeit setzen.
Praktischerweise gibt es einige Bibliotheken die diesen Aufwand erleichtern.
Wir nutzen die weit verbreitete FastLED Bibliothek von Daniel Garcia https://github.com/FastLED , sowie die darauf setzenden Bibliotheken LEDMatrix und LEDText von Aaron Liddiment https://github.com/AaronLiddiment .
Zwar soll das Panel irgendwann in einen PC eingebaut werden, aber in der Zwischenzeit soll es ein informatives Display werden, welches den Paketdienst daran erinnert wo unsere Eingangstür ist, damit er eure Pakete schneller abholen kann.
#include <FastLED.h>
#include <LEDMatrix.h> #include <LEDText.h> #include <FontRobotron.h> // Change the next 6 defines to match your matrix type and size #define LED_PIN 5 #define COLOR_ORDER GRB #define CHIPSET WS2812B #define MATRIX_WIDTH 32 #define MATRIX_HEIGHT 8 #define MATRIX_TYPE VERTICAL_MATRIX // Wie sind die LEDs angeordnet cLEDMatrix<MATRIX_WIDTH, MATRIX_HEIGHT, MATRIX_TYPE> leds; cLEDText ScrollingMsg; const unsigned char TxtDemo[] = { EFFECT_SCROLL_LEFT EFFECT_HSV_CV "\x00\xff\xff\x40\xff\xff" " AZ-DELIVERY" EFFECT_HSV_CH "\x00\xff\xff\x40\xff\xff" " IHR EXPERTE FUER " EFFECT_HSV "\x00\xff\xff" "M" EFFECT_HSV "\x20\xff\xff" "I" EFFECT_HSV "\x40\xff\xff" "K" EFFECT_HSV "\x60\xff\xff" "R" EFFECT_HSV "\xe0\xff\xff" "O" EFFECT_HSV "\xc0\xff\xff" "E" EFFECT_HSV "\xa0\xff\xff" "L" EFFECT_HSV "\x80\xff\xff" "E" EFFECT_HSV "\x00\xff\xff" "K" EFFECT_HSV "\x20\xff\xff" "T" EFFECT_HSV "\x40\xff\xff" "R" EFFECT_HSV "\x60\xff\xff" "O" EFFECT_HSV "\xa0\xff\xff" "N" EFFECT_HSV "\x80\xff\xff" "I" EFFECT_HSV "\x00\xff\xff" "K" EFFECT_HSV "\x20\xff\xff" "!" EFFECT_RGB "\xff\xff\xff" EFFECT_HSV_AH "\x00\xff\xff\xff\xff\xff" " EINGANG RECHTS" EFFECT_SCROLL_RIGHT EFFECT_HSV_AH "\x00\xff\xff\xff\xff\xff" ">>>>>>>>>>>>>>" }; void setup() { FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds[0], leds.Size()); FastLED.setBrightness(10); // WICHTIG - Hier wird die Helligkeit eingestellt. Am Anfang einen niedrigen Wert verwenden, und langsam hochtasten. FastLED.clear(true); delay(500); FastLED.showColor(CRGB::Red); delay(1000); FastLED.showColor(CRGB::Lime); delay(1000); FastLED.showColor(CRGB::Blue); delay(1000); FastLED.showColor(CRGB::White); delay(1000); FastLED.show(); ScrollingMsg.SetFont(RobotronFontData); ScrollingMsg.Init(&leds, leds.Width(), ScrollingMsg.FontHeight() + 1, 0, 0); ScrollingMsg.SetText((unsigned char *)TxtDemo, sizeof(TxtDemo) - 1); ScrollingMsg.SetTextColrOptions(COLR_RGB | COLR_SINGLE, 0xff, 0x00, 0xff); } void loop() { if (ScrollingMsg.UpdateText() == -1){ ScrollingMsg.SetText((unsigned char *)TxtDemo, sizeof(TxtDemo) - 1); delay(20); } else FastLED.show(); delay(20); }
Nach dem hochladen sehen wir dass wir, je nachdem wie lange der Text ist, uns schon langsam an die Grenzen des verfügbaren Speichers des Nano herantasten.
Wir hoffen, dass Sie unser heutiger Blogbeitrag Sie inspiriert hat, und wir freuen uns auf Ihre Kommentare.
Bis zum nächsten Beitrag von AZ-Delivery, Ihrem Experten für Mikroelektronik!
9 Kommentare
Peter
Das ist eine gute Idee, aber eben zu teuer bei mehreren Modulen.
Habe zwar immer gute Gedanken aber kann sie leider nicht umsetzen, da ich im programmieren nicht fit bin.
Da die LED einzeln programmierbar sind, besteht da nicht die Möglichkeit die LED Bänder zu nutzen, in dem man 8 Streifen in der gewünschten Länge schneidet und diese untereinander legt und verbindet.
Dann könnte man auch eine größere Laufschrift fertigen.
Moritz
6.3V für den ElKo sind schon etwas knapp…. schlimmstenfalls macht es “plopp” :-D
Eosne
Kann man auch einen elektrolytkondensator mit 1000 µF 6,3V benutzen ?
Dominik
Keiner dieser Sketches aus den oben genannten Bibliotheken funktioniert auf dem Uno! Es heißt immer nicht genügend RAM verfügbar!
Thomas
Wie bekomme ich Umlaute hin? Also ÖÜÄß.
Rüdiger
Bei bis 12 A die Versorgung über die dünnen Jumper Wire und das Breadboard zu leiten ist gelinde gesagt “sportlich”! Ich hätte da nicht Angst, das das Netzteil “in Flammen aufgeht”, sondern eher, das die Kontaktstellen verschmoren, die Kabel warm werden und die Daten “seltsam aussehen”, da der Massepunkt am jeweiligen Panel am “floaten” ist!
Da sollte man mindestens 1 mm2, besser 1,5 mm2 Kabel verwenden und die Panels über eine sternförmige Verdrahtung anschliessen (lediglich die Datenleitung wird dann busförmig verlegt)
Also bitte die 5V Versorgung oben im fritzing-Bild nur für den Arduino verwenden und das oder die Panels direkt mit dem Netzteil verdrahten.
Kiwix
Heute im Newsletter von dem Projekt gelesen. Zuerst dachte ich, es wäre ja eine tolle Idee, wenn man die benötigten Komponenten als Paket anbieten würde. Hätte ich gekauft und dann direkt mal nachgebaut.
Aber dann musste ich feststellen, dass bis auf den Arduino gar nichts im Shop zu finden ist. Ich finde das nicht so gelungen, auf Projekte mit Komponenten hinzuweisen, die man gar nicht (mehr) im Angebot hat.
Viele Grüße
Kiwix
Pentalon
Danke für die tolle Demo.
Bei mir ist der Text allerdings spiegelverkehrt.
Was muss ich hier ändern, damit die Schrift korrekt angezeigt wird ?
Bester Grüsse…
veit
Nur als Info: wenn man den “Kopier” Button nutzt, bekommt man unsichtbare Sonderzeichen über die Arduino dann schimpft ….