bin neu hier im forum und in sachen programmierung.
für mein fahrad, ein 4-rad, quasie ein 'kettcar für erwachsene' bastel ich an einer lösung mit einem kleincomputer und display.
angedacht ist, die komplette beleuchtung, gangschaltung und gegebenenfalls später noch 'eine art dashcam' und vieleicht sogar navi dort mit zu intregrieren.
da ich einen rasperi PI 3B+ hier habe will ich das damit machen -auch wenn das evtl mit kanonen auf spatzen schiessen ist.
desweitern will ich die nutzung des pi dadurch lernen/gewöhnen.
ich nutze raspbian mit python und gpio-zero.
die englische offizielle doku hab ich immer griffbereit, aber english lesen und verstehen was die damit meinen, gerade im technischen english ist schwer, oft verstehe ich es einfach nicht.
beleuchtung hab ich soweit fertig.
einziger punkt in meinem script:
wenn man die lichthupe/bremslicht wieder abschaltet, schatet er nicht auf das vorher eigestellte um, also nicht auf 'fahrlicht' oder 'startvalue' jenachdem welches grad eingestellt ist, sondern immer auf 'fahrlicht'
hier müsste ich eigentlich den 'ist-zustand abspeichern und wieder anfragen können.
wie geht das? kann mir das einer erklären?
ab zeile 33 im code hab ich mal versucht das problem an zu gehen, funktioniert so aber nicht.
Code: Alles auswählen
#!/usr/bin/python3
from gpiozero import LED, Button, PWMLED
from time import sleep
from signal import pause
button1 = Button(26) #lichtschalter
button2 = Button(19) #fernlichtschalter
button3 = Button(13) #blinkschalter links
button4 = Button(6) #blinkschalter rechts
button5 = Button(5) #hupenschalter
button6 = Button(11) #bremslichtschalter
startvalue = 0.2 # Helligkeit bei Skriptstart
fahrlicht_vorn = 0.5 #Abblendlicht vorn, wert
fernlicht_vorn = 1 #fernlicht vorn, wert
fahrlicht_hinten = 0.5 #fahrlicht hinten ,wert
bremslicht_hinten = 1 #bremslicht hinten, wert
led1 = PWMLED(21,initial_value=startvalue) # Fahrlicht vorn
led2 = PWMLED(20,initial_value=startvalue) # Fahrlicht hinten
led3 = LED(16) # blinker links
led4 = LED(12) # blinker rechts
led5 = LED(7) # hupe
led6 = LED(8) #
def fernlicht():
if led1.value < 1: # wenn abgeblendet
led1.value = 1 # dann aufblenden
else: # sonst
led1.value = fernlicht_aus #
def fernlicht_aus():
if button1.value = 1
led1.value = fahrlicht_vorn
else
led1.value = startvalue
def fahrlicht_an():
led1.value = fahrlicht_vorn
led2.value = fahrlicht_hinten
def fahrlicht_aus():
led1.value = startvalue
led2.value = startvalue
def bremslicht_an():
led2.value = bremslicht_hinten
def bremslicht_aus():
led2.value = fahrlicht_hinten
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)
button5.when_pressed = bremslicht_an
button5.when_released = bremslicht_aus
button1.when_pressed = fahrlicht_an
button1.when_released = fahrlicht_aus
button2.when_pressed = fernlicht
button3.when_pressed = blinker_links
button3.when_released = led3.off
button4.when_pressed = blinker_rechts
button4.when_released = led4.off
pause()
da hab ich 1. ein ähmliches problem speichern und abfragen/ändern des 'ist zustandes'
und die logik mit einem 'up' und 'down' button 8 gänge rauf bzw runter zu schalten.
mein bisheriger code sieht so aus:
Code: Alles auswählen
#!/usr/bin/python3
from gpiozero import LED, Button, PWMLED, AngularServo
from time import sleep
from signal import pause
button1 = Button(26) #lichtschalter
button2 = Button(19) #fernlichtschalter
button3 = Button(13) #blinkschalter links
button4 = Button(6) #blinkschalter rechts
button5 = Button(5) #hupenschalter
button6 = Button(11) #servo hoch-schalten
button7 = Button(9) #servo runter-schalten
startvalue = -90
servo = AngularServo(25, initial_angle = -90 , min_angle=-90, max_angle=90,) # schaltungsservo
# min_puls_width = 0.5 max_puls_width = 3
def gang_1():
servo.angle = -90
def gang_2():
servo.angle = -64.3
def gang_3():
servo.angle = -38.6
def gang_4():
servo.angle = -12.9
def gang_5():
servo.angle = 12.8
def gang_6():
servo.angle = 38.5
def gang_7():
servo.angle = 64.2
def gang_8():
servo.angle = 90
while True:
button5.when_pressed = gang_1
sleep(0.1)
button6.when_pressed = gang_3
sleep(0.1)
button7.when_pressed = gang_8
sleep(0.1)
pause()
später will ich noch mit tkinter eine simple gui machen. diese soll nur den derzeitigen gang anzeigen und mit display-knöpfen die gangschaltung anlernen lassen, also:
man drückt 'settings'
fährt von null bis 100% die verstellmöglichkeit des servos langsam ab(rauf- runter-knopf am display(nicht gänge rauf/runter am lenker))
und kann auf 'speichern' sowie gang-zahl-knopf (1-8) ablegen welcher wert welchem ganz zugewiesen wird.
nach zb 10sec soll man aus dem setting automatisch raus 'fallen' oder eben 'sichern' drücken ginge auch.
hat jemand einen lösungsansatz, wie man die 'gangschalt-logik' aufbauen könnte?
wie lege ich zb eine liste (gang 1-8 an) um dort die servo-angel-daten hin zu schreiben um dann diese zum schalten zu verwenden also wieder aus zu lesen?
fragen über fragen....
nachsatz: ich habe schwere konzentrations-probleme und kann entweder korrekte rechtschreibung schreiben oder mich darauf konzentrieren WAS ich schreibe, also den inhalt meines textes. ich gebe dem korrekten inhalt und das man versteht was ich sagen möchte den vorzug statt der korrekten schreibweise, zb gross/kleinschreibung...