LED-Würfel: Zufallszahlen auf der Pixelmatrix darstellen
In meinem vorherigen Beitrag 'Pixelmatrix Combo von Oxocard: So programmierst du die 5×5 LED Matrix' habe ich bereits die Grundlagen und Möglichkeiten der Pixelmatrix vorgestellt. In diesem Beitrag möchte ich nun einen Schritt weiter gehen und zeigen, wie du mit der 5 × 5 LED Matrix einen digitalen Würfel programmierst, der Zufallszahlen anzeigt. Dieses Projekt eignet sich hervorragend, um die Programmierung von Zufallszahlen und die Ansteuerung der LEDs in einem kreativen Projekt zu kombinieren.
https://youtu.be/RADOEflnNDs
Hinweis: Dieses Produkt wurde mir vom Entwickler der Oxocard auf der Maker Faire 2024 in Hannover kostenlos zur Verfügung gestellt. Meine Meinung und Bewertung des Produkts basieren jedoch ausschließlich auf meinen eigenen Erfahrungen und sind unabhängig von dieser Bereitstellung.
Bezug der Pixelmatrix von Oxocard
Die in diesem Beitrag verwendete Pixelmatrix bekommst du für derzeit 49 CHF (ca. 52 €) unter https://oxocard.ch/. Zu dem Set gehört neben der Pixelmatrix noch der Mikrocontroller Oxocard Connect, welchen du für diese Cartridge benötigst.
Rechts ist die Pixelmatrix Cartridge, da ich den Mikrocontroller bereits besitze, benötigte ich nicht das komplett Set.
Programmieren der Oxocard Connect in NanoPy
Den Mikrocontroller kannst du in NanoPy via Python programmieren. Die Entwicklungsumgebung NanoPy ist sehr leistungsstark und bietet für erfahrene Entwickler sehr viele nützliche Features, welches man in anderen Editoren für Mikrocontroller schmerzhaft vermisst, zum Beispiel ein Debugger.
Editor - NanoPy für die Oxocard Connect
Programmieren eines Würfels mit der Pixelmatrix & der Oxocard Connect
Bevor wir mit der eigentlichen Programmierung starten, schauen wir uns an, wie man die Pixelmatrix programmiert. Jeder NeoPixel hat einen Index, welcher oben rechts beginnt und unten links endet.
Anordnung der NeoPixel auf der Pixelmatrix Combo von Oxocard
Mit der Funktion setDigitalLed können wir dann über diesen Index die LED ansteuern und einen RGB Wert übergeben.
#aktivieren der LED mit Index 1 und setzen der Farbe blau
setDigitalLed(1, 0, 0, 100)
Theoretisch können wir jeden Farbwert verwenden, hier empfehle ich dir die Seite https://htmlcolorcodes.com/, auf welcher du recht einfach einen solchen Wert generieren kannst.
Bitmaskieren der Zeilen
Da wir die sechs möglichen Werte des Würfels auf der Pixelmatrix anzeigen wollen, gibt es hier mehrere Lösungen. Der wohl einfachste Weg ist ein Array mit 25 Werten für jeden Wert, das ergibt dann 6 Arrays welche wir je nach ermittelter Zufallszahl verwenden. Theoretisch spricht nichts gegen diese Lösung, denn es ist sehr unwahrscheinlich, dass ein neuer Wert hinzukommt, jedoch ist diese nicht optimal.
Wir können auch jede Zeile in ein Bitmuster maskieren und so durch eine 0 und 1 den Zustand jedes NeoPixel abbilden.
Im nachfolgenden Beispiel stelle ich die Augenzahl 1 dar, es sind alle NeoPixel deaktiviert außer das Mittlere in der dritten Zeile.
digits =
Wir benötigen zusätzlich noch eine Funktion, welche uns den Status des Neopixels liefert. Ich definiere hier, dass ein Bitmuster eine Zeile (in Englisch row) ist und als zusätzlichen Parameter übergebe ich den Index pro Zeile. Als Rückgabewert erhalte ich ein true, wenn der NeoPixel aktiviert werden soll, andernfalls ein false.
def checkLed(row, index)->bool:
return row & (1
bool:
return row & (1
bool:
return row & (1
Read the full article