Hallo zusammen,
ja... eig beschreibt der Titel schon mein Problem. Ich steuere einen LED-Strip über 3 Transistoren an. Programmieren wollte ich das Ganze mit Python und der RPi.GPIO Library.
Leider flackert der Strip ziemlich, d.h. es sieht so aus als würden manchmal für kurze Zeit die Befehle zum Ein- bzw. Ausschalten nicht ausgeführt werden. Ich weiß der RasPi ist kein Echtzeit-System, aber andere bringens doch auch hin :s
Hier ist mein testweiser Python-Code:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.OUT) #ROT
GPIO.setup(18, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.output(16, GPIO.HIGH)
GPIO.output(18, GPIO.HIGH)
GPIO.output(22, GPIO.HIGH)
time.sleep(2)
GPIO.output(16, GPIO.LOW)
time.sleep(0.5)
GPIO.output(18, GPIO.LOW)
time.sleep(0.5)
GPIO.output(22, GPIO.LOW)
time.sleep(0.5)
time.sleep(2)
r = GPIO.PWM(16, 120) #Ab hier soll der GPIO23 bzw. Pin 16 mit halber Kraft den blauen Kanal ansteuern
r.start(50)
time.sleep(10)
r.stop()
Display More
Ich hab Frequenzen von 60 - 10.000 Hz versucht, macht keinen wirklichen Unterschied
lg, couka
[hr]
LÖSUNG:
Kaum nervt man andere damit, findet man selber ne Lösung
Also die RPi.GPIO Library ist dafür einfach nicht geeignet. Garbage Collector und Co. gönnen sich zwischendurch einfach zu viel exklusive Rechenzeit
Lösung:
Einen erstklassigen workaround bietet pi-blaster. Nach 2 Minuten "Installationsarbeit" leuchtet der rote Kanal jetzt auf exakt 84,6% Helligkeit :thumbs1:
Der Python-Code sieht dann beispielsweise so aus: (5 Überblendungen von 0-100% auf Pin23)
import os
import time
lumred = "0"
for i in range (5):
for i in range (100):
cmd23 = "echo '23=" + lumred + "' > /dev/pi-blaster"
resultcode = os.system(cmd23)
lumred = str((float(lumred))+0.01)
time.sleep(0.01)
for i in range (100):
cmd23 = "echo '23=" + lumred + "' > /dev/pi-blaster"
resultcode = os.system(cmd23)
lumred = str((float(lumred))-0.01)
time.sleep(0.01)
Display More
lg, couka