Eine Linie und Bewegungen: Beispiele für Ausgaben auf dem LED-Panel

Das nachfolgende Beispiel zeigt auf dem LED-Panel eine Linie von links oben nach rechts unten.

  1. // File test_draw_line.cs
  2. using System;
  3. using System.Threading;
  4. using rpi_rgb_led_matrix_sharp; // RGBLedMatrix.dll
  5.  
  6. namespace rgbmatrixclock
  7. {
  8. class Program
  9. {
  10. static int Main(string[] args)
  11. {
  12. // Instanzierung der Objekte
  13. var matrix = new RGBLedMatrix(new RGBLedMatrixOptions
  14. {
  15. Rows = 64,
  16. Cols = 64,
  17. GpioSlowdown = 2,
  18. LimitRefreshRateHz = 60,
  19. Brightness = 35,
  20. DisableHardwarePulsing = false
  21. });
  22. var canvas = matrix.CreateOffscreenCanvas();
  23. var yellow = new Color(255,255,0);
  24. // Der Ursprung des Koordinatensystems ist links oben.
  25. // Die y-Achse zeigt nach unten.
  26. // Linie diagonal über den Bildschirm zeichnen:
  27. canvas.DrawLine(0, 0, 63, 63, yellow);
  28. // Die "Leinwand" auf das Panel übertragen
  29. canvas = matrix.SwapOnVsync(canvas);
  30. // 10 Sekunden warten
  31. Thread.Sleep(10000);
  32. // Mit Programmende wird das LED-Panel zurückgesetzt.
  33. return 0;
  34. }
  35. }
  36. }

Das Objekt matrix (Zeile 14) entspricht dem LED-Panel. Im Konstruktor RGBLedMatrix sind diverse Optionsparameter zur Konfiguration des Panels definiert. Informationen zu diesen Parametern entnehmen wir der Herstellerdokumentation zum Panel. Zusätzliche Informationen gibt es in verschiedenen readme- und Header-Dateien im Bibliotheksverzeichnis, wie zum Beispiel hier \rpi-rgb-led-matrix\README.md oder hier \rpi-rgb-led-matrix\include\led-matrix.h.

Das Objekt canvas (Zeile 23) ist mit einem 64-x-64-Pixel-Bitmap vergleichbar, das im Speicher liegt. Jedes Pixel dieses Bitmaps entspricht einer LED des Panels. Auf dem Bitmap zeichnen wir mit der Methode DrawLine (Zeile 28).

Das canvas-Objekt beherrscht weiterhin die Methoden DrawCircle, DrawText, SetPixel und Fill - mehr aber auch nicht. Umfangreiche Draw- und Fill-Methoden, wie wir sie beispielsweise aus dem .Net-Framework-Namespace Drawing kennen, gibt es hier leider nicht. Mit ein bisschen Mathematik erstellen wir uns diese Methoden jedoch bei Bedarf leicht selbst.

Die Matrix-Methode SwapOnVsync (Zeile 30) überträgt das Bitmap dann auf das LED-Panel. Erst durch diese Methode ist auf dem Panel etwas zu sehen.

  • Unser 10-adriges Flachbandkabel (Bild: Michael Bröde)
  • Der Pinout für das LED-Panel - auf der nächsten Seite ist der Pinout für die GPIO-Leiste zu sehen. (Bild: Michael Bröde)
  • Der Pinout für die GPIO-Leiste des Raspberry Pi Zero (Bild: Michael Bröde)
  • Hier ein Screenshot aus Putty (Bild: Michael Bröde)
Hier ein Screenshot aus Putty (Bild: Michael Bröde)

Der nachfolgende Codeschnipsel zeigt, wie Bewegungen auf dem LED-Panel ausgegeben werden. Die grundlegenden Schritte sind immer die gleichen: eine Schleife erstellen, darin pro Durchlauf die Leinwand zurücksetzen, eine Situation zeichnen, SwapOnVsync anweisen, neue Situation berechnen und nächsten Schleifendurchlauf ausführen. In diesem Beispiel wird die Linie um den Panel-Mittelpunkt gedreht:

  1. int x = 0;
  2. int y = 0;
  3. // Eine Endlosschleife
  4. for ( ; ; )
  5. {
  6. // Leinwand zurücksetzen
  7. canvas.Clear();
  8. // Linie zeichnen
  9. canvas.DrawLine(x, y, 63 - x, 63 - y, yellow);
  10. // Auf dem Panel ausgeben
  11. canvas = matrix.SwapOnVsync(canvas);
  12. // Neue Koordinaten berechnen
  13. if (++y > 63)
  14. {
  15. y = 63;
  16. x++;
  17. }
  18. if (x > 63)
  19. {
  20. x = 0;
  21. y = 0;
  22. }
  23. }

Für die Ausgabe von Text stehen im Arbeitsverzeichnis fonts diverse Font-Dateien zur Verfügung. Auf diese muss bei der Instanziierung des Font-Objekts explizit verwiesen werden. Mit den folgenden Anweisungen geben wir Text auf dem LED-Panel aus:

  1. RGBLedFont font = new RGBLedFont("/home/pi/rpi-rgb-led-matrix/fonts/7x13.bdf");
  2. canvas.DrawText(font, 10, 30, yellow, "Hallo");
  3. canvas.DrawText(font, 10, 45, yellow, "Welt!");

Fazit

In diesem Projekt haben wir gezeigt, wie mit einfacher C#-Programmierung Ausgaben auf einem LED-Panel gemacht werden. Wenn auch zum Zeichnen nur 64 x 64 Bildpunkte zur Verfügung stehen, sind die Möglichkeiten doch vielfältig.

Darüber hinaus besteht die Möglichkeit, mehrere LED-Panels parallel und/oder in Reihe verkettet an einem einzigen Raspberry Pi zu betreiben. So bilden zum Beispiel vier LED-Panels im Quadrat ein circa 40 x 40 cm großes Display mit 128 x 128 Bildpunkten.

Damit sind schon viel mehr Ideen für Hobby und Beruf realisierbar. Auch die Anordnung von vier Panels nebeneinander (circa 20 x 80 cm) ist eine Lösung für verschiedene praktische Aufgaben. Als ein Beispiel sei hier die Textausgabe mittels Laufschrift genannt.

Natürlich ist bei solchen Konstellationen mehr Augenmerk auf die Raspberry-Hardware zu richten. Hier empfehlen wir zum Beispiel die Ausrüstung mit einer aktiven Kühlung. Die Zero-Version des Raspberrys ist dafür nicht geeignet.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 So erstellen wir ein Programm
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5


Aktuell auf der Startseite von Golem.de
Wissenschaft
In Energydrinks enthaltenes Taurin könnte Leben verlängern

Wissenschaftler haben Anzeichen dafür entdeckt, dass Taurin die Gesundheit verbessern und das Leben verlängern könnte. Mehr Energydrinks sollte man aber nicht trinken.

Wissenschaft: In Energydrinks enthaltenes Taurin könnte Leben verlängern
Artikel
  1. Tesla Files: Cybertruck ist undicht, laut und bremst schlecht
    Tesla Files
    Cybertruck ist undicht, laut und bremst schlecht

    Internen Dokumenten zufolge steht Teslas Pick-up-Truck vor großen Problemen. Der Cybertruck befinde sich in der Alpha-Phase.

  2. VATM: Menschen nutzen weiter Call-by-Call und Preselection
    VATM
    Menschen nutzen weiter Call-by-Call und Preselection

    Die Telekom hat Call-by-Call und Preselection mehrfach verlängert. Obwohl viele Menschen sie weiterhin nutzen, enden diese Dienste bald.

  3. Einführung in Plotly: Damit die Daten Sinn ergeben
    Einführung in Plotly
    Damit die Daten Sinn ergeben

    Interaktive Plots mit Plotly zu erstellen, ist nicht schwer - und sehr nützlich. In einer zweiteiligen Reihe zeigen wir Schritt für Schritt, wie es funktioniert.
    Eine Anleitung von Antony Ghiroz

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • XXL-Sale bei Alternate (u. a. Samsung 970 EVO Plus 2 TB 84,90€) • MindStar: Palit RTX 4070 Ti GameRock OC 859€, be quiet! Pure Base 500 59€ • Thermaltake Toughliquid Ultra 240 145,89€ • PS5-Spiele & Zubehör bis -75% • Chromebooks bis -32% • NBB: Gaming-Produkte bis -50% [Werbung]
    •  /