Bei meinem Code Versuche ich eine LED in Verschiedenen Farben leuchten lassen und das Licht dann später mit einem Schieberegler das Licht zu dimmen.
Zusätzlich soll unter dem Schieberegler die Farbe erscheinen, in der die LED leuchtet.
Jetzt zu meinem Problem, wenn ich eine Farbe eingestellt ist und ich dann die Helligkeit mit dem Regler verändere, passiert es manchmal, das eine der Variablen rfz2, gfz2, bfz2 kleiner als 0 ist, obwohl das vorher kontrolliert wird und wenn nötig auch der Wert verändert wird. Kann mir da bitte jemand weiterhelfen?
Danke schonmal im Vorraus
Code: Alles auswählen
import tkinter as tk
import tkinter.colorchooser as tkc
import pigpio
ColorCode = "#FFFFFF"
rpin = 22
gpin = 23
bpin = 24
r = 0
g = 0
b = 0
rval = 255
gval = 255
bval = 255
rval2 = 255
gval2 = 255
bval2 = 255
pi1 = pigpio.pi('IP-Adresse') #IP-Adresse des Raspberry Pis
pi1.set_mode(rpin, pigpio.OUTPUT)
pi1.set_mode(gpin, pigpio.OUTPUT)
pi1.set_mode(bpin, pigpio.OUTPUT)
pi1.write(rpin, 1)
pi1.write(gpin, 1)
pi1.write(bpin, 1)
def RGB(rvar, gvar, bvar):
pi1.set_PWM_dutycycle(rpin, rvar)
pi1.set_PWM_dutycycle(gpin, gvar)
pi1.set_PWM_dutycycle(bpin, bvar)
def RGB_LED():
global ColorCode, r, g, b, rval, gval, bval, rval2, gval2, bval2
color = tkc.askcolor(color=(r, g, b), title="RGB")
ColorCode = color[1]
c.create_rectangle(0,0,1000,1000, fill=ColorCode)
rgb = color[0]
rval = int((rgb[0]-255)*(-1))
gval = int((rgb[1]-255)*(-1))
bval = int((rgb[2]-255)*(-1))
rval2 = int((rgb[0]-255)*(-1))
gval2 = int((rgb[1]-255)*(-1))
bval2 = int((rgb[2]-255)*(-1))
r = rgb[0]
g = rgb[1]
b = rgb[2]
if rval > 255:
rval = 255
if gval > 255:
gval = 255
if bval > 255:
bval = 255
if rval2 > 255:
rval2 = 255
if gval2 > 255:
gval2 = 255
if bval2 > 255:
bval2 = 255
if r > 255:
r = 255
else:
r = int(round(r))
if g > 255:
g = 255
else:
g = int(round(g))
if b > 255:
b = 255
else:
b = int(round(b))
RGB(rval, gval, bval)
if r > g and r > b:
w1.set(r)
if r == g and r > b:
w1.set(r)
if r == b and r > g:
w1.set(r)
if r == g and r == b:
w1.set(r)
if g > r and g > b:
w1.set(g)
if g == b and g > r:
w1.set(g)
if b > r and b > g:
w1.set(b)
ButCount1 = 0
def LEDOff():
global ButCount1
ButCount1 += 1
if ButCount1 == 1:
RGB(255,255,255)
b2["text"]="LED on"
if ButCount1 == 2:
RGB(rval, gval, bval)
b2["text"]="LED off"
ButCount1 -= 2
def setBrightness(x):
global r, g, b, ColorCode
x = int(x)
y = int((x-255)*(-1))
lab1["text"]=x
rz = int(rval2)
gz = int(gval2)
bz = int(bval2)
rd = rz - y
gd = gz - y
bd = bz - y
rz2 = int(r)
gz2 = int(g)
bz2 = int(b)
rd2 = rz2 - x
gd2 = gz2 - x
bd2 = bz2 - x
if r > g and r > b:
rf = rz - rd
gf = gz - rd
bf = bz - rd
rf2 = rz2 - rd2
gf2 = gz2 - rd2
bf2 = bz2 - rd2
if r == g and r > b:
rf = rz - rd
gf = gz - rd
bf = bz - rd
rf2 = rz2 - rd2
gf2 = gz2 - rd2
bf2 = bz2 - rd2
if r == b and r > g:
rf = rz - rd
gf = gz - rd
bf = bz - rd
rf2 = rz2 - rd2
gf2 = gz2 - rd2
bf2 = bz2 - rd2
if r == g and r == b:
rf = rz - rd
gf = gz - rd
bf = bz - rd
rf2 = rz2 - rd2
gf2 = gz2 - rd2
bf2 = bz2 - rd2
if g > r and g > b:
rf = rz - gd
gf = gz - gd
bf = bz - gd
rf2 = rz2 - gd2
gf2 = gz2 - gd2
bf2 = bz2 - gd2
if g == b and g > r:
rf = rz - gd
gf = gz - gd
bf = bz - gd
rf2 = rz2 - gd2
gf2 = gz2 - gd2
bf2 = bz2 - gd2
if b > r and b > g:
rf = rz - bd
gf = gz - bd
bf = bz - bd
rf2 = rz2 - bd2
gf2 = gz2 - bd2
bf2 = bz2 - bd2
if rf < 0:
rfz = 0
else:
rfz = rf
if gf < 0:
gfz = 0
else:
gfz = gf
if bf < 0:
bfz = 0
else:
bfz = bf
if rf > 255:
rfz = 255
else:
rfz = rf
if gf > 255:
gfz = 255
else:
gfz = gf
if bf > 255:
bfz = 255
else:
bfz = bf
if rf2 < 0:
rfz2 = 0
else:
rfz2 = rf2
if gf2 < 0:
gfz2 = 0
else:
gfz2 = gf2
if bf2 < 0:
bfz2 = 0
else:
bfz2 = bf2
if rf2 > 255:
rfz2 = 255
else:
rfz2 = rf2
if gf2 > 255:
gfz2 = 255
else:
gfz2 = gf2
if bf2 > 255:
bfz2 = 255
else:
bfz2 = bf2
RGB(rfz, gfz, bfz)
r = rfz2
g = gfz2
b = bfz2
ccc(rfz2, gfz2, bfz2)
c.create_rectangle(0,0,1000,1000, fill=ColorCode)
def ccc(r, g, b):
global ColorCode
x = str(hex(r))
y = str(hex(g))
z = str(hex(b))
if len(x) == 3:
x1 = "0" + str(x[2])
else:
x1 = str(x[2])+str(x[3])
if len(y) == 3:
y1 = "0" + str(y[2])
else:
y1 = str(y[2])+str(y[3])
if len(z) == 3:
z1 = "0" + str(z[2])
else:
z1 = str(z[2])+str(z[3])
ColorCode = "#"+x1+y1+z1
master = tk.Tk()
master.title("LED Strip")
master.geometry("100x350")
lab1 = tk.Label(master)
lab1.pack()
w1 = tk.Scale(master, from_=255, to=0,orient=tk.VERTICAL, showvalue=0, length = 100, width = 30, command=setBrightness)
w1.pack()
b1 = tk.Button(master, text="RGB LED", command=RGB_LED)
b1.pack()
b2 = tk.Button(master, text="LED off", command=LEDOff)
b2.pack()
c = tk.Canvas(master, width=50, height=20)
c.pack()
c.create_rectangle(0,0,1000,1000, fill="#ffffff")
lab1["text"]=w1.get()
tk.mainloop()