Hallo zusammen,
ich fand keins der Unterforen passend, deswegen ist es hoffentlich in Allgemein richtig.
Ich hab bereits den ganzen Vormittag und Mittag damit verbracht, eine Lösung zu finden, bin aber nicht wirklich auf das richtige gekommen.. aber mal von vorne:
Die Anzeige meiner Ampel realisier ich mit LED Strips aus WS2801 in Form von 3x 7 Segment-Anzeigen. Ich will entsprechend der benötigten Anzeige die Segmente einzeln ansteuern (also jede LED für sich, ein Segment besteht aus 7 LEDs).
Ich hatte bereits vor einiger Zeit einiges mit diesem Tutorial getestet und es hat soweit ganz gut funktioniert.
Jetzt will ich das ganze aber in Java umschreiben und finde dafür keine passende Library oder bin nur zu doof, diese anzuwenden.
Meine grundsätzliche Struktur hab ich bereits (Farbcodes, Aufteilung in Ziffern, Segmente) soweit fertig, und funktioniert nach Consolenausgabe auch wie gewünscht.
Für die Ansteuerung der LEDs find ich aber nicht das richtige.
Mit Google lande ich immer bei der Library Pi4j mit WiringPi, Serial und I2C, aber ich häng bei der Anwendung.
Folgendes Schema:
Wenn sich die Ziffer oder Farbe der 7-Segment-Anzeige ändert, übergeb ich die Werte Farbe und Ziffer an die class Ziffer. Diese schaut dann für jedes Segment, ob dieses an oder aus sein muss. Dieser Wert wird dann weiter an die class Segment übergeben, in welcher der aktuelle Status (Farbe/Aus) gespeichert ist. Wenn für dieses Segment die Farbe geändert werden muss, sollen nur die 7 LEDs dieses Segments neu angesteuert werden. Dies würde ich dann an dieser Stelle an einen Buffer übergeben.
Dieser Durchlauf soll für alle 3 Ziffern mit je 7 Segmenten ausgeführt werden.
Wenn alle überprüft wurden, soll aus dem Buffer die LEDs, welche verändert werden sollen, diese über den Bus das neue Signal erhalten. Die LEDs, welche gleich bleiben, sollen nicht angesteuert werden.
Das, was mir in den vorhin genannten Libraries fehlt, ist, dass ich eine einzelne LED ansteuern kann (also auch eine Adresse allein mitten drin) und dass diese dann erst am Ende alle auf einmal über eine Methode überschrieben werden (wie das Pixels.show() in oben genannten Tutorial).
Den Buffer könnte ich ggf. natürlich auch selbst schreiben, aber hoffentlich gibt es da bereits was. Aber die einzelne Ansteuerung der LEDs ist sehr wichtig, da es später auch eine größere Variante der Ampel geben wird und bei der Menge der LEDs dann die Buszykluszeit zu groß werden würde, wenn ich auch die LEDs ansteuern müsste, die sich nicht verändern.
Ich hoffe, mir kann da jemand weiter helfen.
Wenn mein bisheriger Code nützlich wäre, kann ich den gerne nachliefern.
Liebe Grüße
Fipsi
P.S.: ich beschäftige mich erst seit sehr kurzer Zeit mit Java.