Damit werde ich mich Morgen beschäftigen, in einer neuen Datei wo es nur um diese Beleuchtung geht. mal seh'n ob ich das so hin bekomme

Du musst eine Instanz der Klasse bilden und dann kannst du bei der Instanz Attribute setzen und Methoden anwenden.konkret, was muss ich wo bitte schreiben damit die 'class Licht' zb genutzt wird und nicht einfach nur 'nichts' passiert?
Code: Alles auswählen
...
licht = Licht()
licht.fahrlicht_an() #der Methodenaufruf schaltet das Fahrlicht ein
Code: Alles auswählen
#!/usr/bin/python3
from gpiozero import LED,Button,PWMLED,AngularServo
from time import sleep
from signal import pause
from functools import partial
fahrlicht_button = Button(26) #lichtschalter
fernlicht_button = Button(19) #fernlichtschalter
blinker_li = Button(13) #blinkschalter links
blinker_re = Button(6) #blinkschalter rechts
hupe = Button(5) #hupenschalter
gang_hoch = Button(11) #servo hoch-schalten
gang_runter = Button(9) #servo runter-schalten
bremse = Button(10)
GEAR2SERVO = [-90, -64.3, -38.6, -12.9, 12.8, 38.5, 64.2, 90]
current_gear = 0
servo = AngularServo(25,
initial_angle=GEAR2SERVO[current_gear],
min_angle=min(GEAR2SERVO),
max_angle=max(GEAR2SERVO), min_pulse_width=0.0008, max_pulse_width=0.0023)
fahrlicht = 0.5 #Abblendlicht vorn, wert
fernlicht = 1 #fernlicht vorn, wert
bremslicht = 1 #bremslicht hinten, wert
lichtaus = 0
led1 = PWMLED(21,initial_value=0) # Fahrlicht vorn
led2 = PWMLED(20,initial_value=0) # Fahrlicht hinten
led3 = LED(16) # blinker links
led4 = LED(12) # blinker rechts
led5 = LED(7) # hupe
def clamp(value, lower, upper):
return max(min(upper, value), lower)
def shift(direction):
global current_gear
current_gear = clamp(current_gear + direction, 0, len(GEAR2SERVO)-1)
servo.angle = GEAR2SERVO[current_gear]
def blinker_links():
led3.blink (on_time = 0.8, off_time = 0.2)
def blinker_rechts():
led4.blink (on_time = 0.8, off_time = 0.2)
def fernlicht_an():
if led1.value < 1: # wenn abgeblendet
led1.value = 1 # dann aufblenden
else: fernlicht_aus
def fernlicht_aus():
if fahrlicht_button.is_pressed:
led1.value = fahrlicht
else: led1.value =lichtaus
def fahrlicht_an():
led1.value = fahrlicht
led2.value = fahrlicht
def fahrlicht_aus():
led1.value = lichtaus
led2.value = lichtaus
def bremslicht_an():
led2.value = bremslicht
def bremslicht_aus():
if fahrlicht_button.is_pressed:
led2.value = fahrlicht
else: led2.value = lichtaus
gang_hoch.when_pressed = partial(shift, +1)
gang_runter.when_pressed = partial(shift, -1)
blinker_li.when_pressed = blinker_links
blinker_li.when_released = led3.off
blinker_re.when_pressed = blinker_rechts
blinker_re.when_released = led4.off
fahrlicht_button.when_pressed = fahrlicht_an
fahrlicht_button.when_released = fahrlicht_aus
fernlicht_button.when_pressed = fernlicht_an
fernlicht_button.when_released = fernlicht_aus
bremse.when_pressed = bremslicht_an
bremse.when_released = bremslicht_aus
hupe.when_pressed = led5.on
hupe.when_released = led5.off
pause()
Zu deiner Ehrenrettung muss man ja sagen, dass das kein Spaghetticode ist. Bei Verwendung von gpiozero ist das ja erst mal der normale Weg, dass man Funktionen definiert und die an Callbacks bindet.Der Spagetti-code funktioniert nun.