derAngler Posted September 25, 2014 at 08:53 PM Posted September 25, 2014 at 08:53 PM Nabend, ich möchte gerne in python die Farbe der LED's auslesen. Soweit ich das sehe, geht das mit dem Befehl LEDStrip.get_rgb_values(index, length) Nur leider bekomme ich es einfach nicht auf die Reihe. Kann mir jemand, oder besser, könnte das TF-Team dazu nicht ein kleines Beispiel auf der Homepage veröffentlichen? Quote
photron Posted September 26, 2014 at 08:05 AM Posted September 26, 2014 at 08:05 AM get_rgb_values ist richtig, das muss du jetzt nur wie set_rgb_values rückwärts verwenden. Hier ein kurzes Beispiel (ungetestet): # the number of LEDs to get the color for number_of_leds = ... all_r = [] all_g = [] all_b = [] # list of indices [0, 16, 32, ...] that are smaller than number_of_leds indices = range(0, number_of_leds, 16) for index in indices: # number of LEDs remaining, but not more than 16 length = min(number_of_leds - index, 16) r, g, b = led_strip.get_rgb_values(index, length) all_r += r[:length] all_g += g[:length] all_b += b[:length] Wie set_rgb_values arbeitet auch get_rgb_values auf 16er Blöcken. Die indices Liste beinhaltet alle Startindizes der 16er Blöcke bis zur angegebenen LED Anzahl (number_of_leds). In der Schleife werden die Blöcke dann abgefragt. Die Länge des Blocks wird jeweils berechnet. Für alle Blöcke außer dem Letzten ist die Länge 16, da für diese number_of_leds - index > 16 ist. Für den letzten Block kann die Länge kürzer sein. Zum Beispiel: number_of_leds ist 40, dann ist indices [0, 16, 32] und es wird get_rgb_values(0, 16), get_rgb_values(16, 16) und get_rgb_values(32, aufgerufen. 8 daher weil number_of_leds - index in diesem Fall 40 - 32 = 8 ist, also kleiner 16. Da get_rgb_values aber immer 3 Listen der Länge 16 zurück gibt müssen beim letzten Aufruf diese Listen gekürzt werden auf die wahre Länge, daher r[:length]. Quote
derAngler Posted September 28, 2014 at 07:35 PM Author Posted September 28, 2014 at 07:35 PM Danke Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.