Eine weg sowas zu machen ist die Zustände der diversen Schalter bitweise zu kombinieren. 1 für Licht an, 2 für bremse gedrückt. Verodert nimmt das dann Werte von 0-3 an, und DAS schlägst du dann in einer Liste mit PWMS, zb [0, 0.5, 1, 1] nach. Da ist dann nicht bremsen und nicht Licht aus, Licht an halb hell, und alle anderen Kombinationen - nur bremsen, oder bremsen mit Licht - ganz hell.
schaltlogik entwickeln für 8-gang-schaltung
Ich hab dir dazu was geschrieben.
hier mal eine meiner notizen:
das problem liegt dann wieder in der letzen zeile:
wie kann das zurück-schalten von 'licht mit bremslicht' oder 'licht mit fernlicht' korrekt laufen jenachdem in welchem zustand das licht vorher war?
also:
wenn licht gerade an war und man nichtmehr bremst, DANN wieder auf 'licht an' sonst ganz aus.
bzw:
wenn licht gerade an war und man nichmehr fernlicht an hat, DANN wieder auf 'licht an' sonst ganz aus
DAS problem hab ich bei bisher bei allen herangehensweisen
egal ob mit listen oder oder
irgendwo hab ich da besagten knoten im kopf.
einziger lösungsansatz den ich da bisher sehe:
den 'istzustand' irgendwie irgendwo hinspeichern und wieder auslesen können -nur wie?!
das problem liegt dann wieder in der letzen zeile:
wie kann das zurück-schalten von 'licht mit bremslicht' oder 'licht mit fernlicht' korrekt laufen jenachdem in welchem zustand das licht vorher war?
also:
wenn licht gerade an war und man nichtmehr bremst, DANN wieder auf 'licht an' sonst ganz aus.
bzw:
wenn licht gerade an war und man nichmehr fernlicht an hat, DANN wieder auf 'licht an' sonst ganz aus
DAS problem hab ich bei bisher bei allen herangehensweisen
egal ob mit listen oder oder
irgendwo hab ich da besagten knoten im kopf.
einziger lösungsansatz den ich da bisher sehe:
den 'istzustand' irgendwie irgendwo hinspeichern und wieder auslesen können -nur wie?!
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@geist4711: Den Zustand ob das Licht an oder aus ist zu speichern, wäre der Weg, den ich nehmen würde. Und zusätzlich die Stufe (aus, an, extra hell), damit man in den Methoden zum an- und ausschalten des Lichts und des zu- und abschalten von Fernlicht oder Bremslicht, immer die richtige Entscheidung treffen kann welche Stufe gesetzt werden muss. Denn es gibt ja nicht nur die Entscheidung bei Fern- oder Bremslicht ob man beim Abschalten auf normale Beleuchtung oder ganz aus wechselt, sondern auch beim Anschalten vom Fahrlicht ob man auf „an“ wechselt oder den aktuellen Zustand belässt wenn gerade das Fern- oder Bremslicht an ist. Beispiel: Wenn man gerade beim bremsen ist und dabei das Licht anschaltet, darf das Bremslicht dadurch ja nicht auf normale Helligkeit runter gehen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
ausgehend vom bisherigen beleuchtungsscript,
müsste dann also wenn ich mit 'fahrlicht_an' das fahrlicht anmache,
auchnoch irgendwie und irgendwo abspeichern 'fahrlich ist jetzt = 0.6' zb
also eine zeile dazu schreiben, die sagt 'speichere istzustand'
wenn dann 'fernlicht_aus' kommt, wird 'fahrlicht ist jetzt = 0.6''' abgefragt und
dessen wert als der wert genommen, den das fahrlicht nun annehmen soll.
das selbe beim bremslicht.
man kann dann auchnoch solche werte für bremslicht und fernlicht eintragen und beim einschalten des lichtes abfragen, das beim einschalten nicht das bremslicht aus geht......
oder:
ich hab 2 ausdrücke(vorderlichtwert, hinterlichtwert zb),
die 3 zustände(o, o.6, 1 -eben die pwm-stufen) annehmen können,
und da wird der 'momentanwert' eingetragen, also einer der 3 möglichen werte.
ich hab dann eine routine die nur abfragt welchen zustand das licht vorn und hinten hat und danach wird das licht dann heller oder dunkler gemacht -oder auch aus.
dazu eine 'sperre' wenn fern- oder bremslicht an gemacht wird, das das licht so hell bleibt wie beim bremsen/fernlicht sein soll, aber trotzdem den 'vorderlicht, hinterlicht'-wert neu schreibt, wenn man genau dann das licht einschaltet.
wie speichert man solche werte und liest sie aus?
oder hab ich da wieder ein 'hirngespinnst' ?
müsste dann also wenn ich mit 'fahrlicht_an' das fahrlicht anmache,
auchnoch irgendwie und irgendwo abspeichern 'fahrlich ist jetzt = 0.6' zb
also eine zeile dazu schreiben, die sagt 'speichere istzustand'
wenn dann 'fernlicht_aus' kommt, wird 'fahrlicht ist jetzt = 0.6''' abgefragt und
dessen wert als der wert genommen, den das fahrlicht nun annehmen soll.
das selbe beim bremslicht.
man kann dann auchnoch solche werte für bremslicht und fernlicht eintragen und beim einschalten des lichtes abfragen, das beim einschalten nicht das bremslicht aus geht......
oder:
ich hab 2 ausdrücke(vorderlichtwert, hinterlichtwert zb),
die 3 zustände(o, o.6, 1 -eben die pwm-stufen) annehmen können,
und da wird der 'momentanwert' eingetragen, also einer der 3 möglichen werte.
ich hab dann eine routine die nur abfragt welchen zustand das licht vorn und hinten hat und danach wird das licht dann heller oder dunkler gemacht -oder auch aus.
dazu eine 'sperre' wenn fern- oder bremslicht an gemacht wird, das das licht so hell bleibt wie beim bremsen/fernlicht sein soll, aber trotzdem den 'vorderlicht, hinterlicht'-wert neu schreibt, wenn man genau dann das licht einschaltet.
wie speichert man solche werte und liest sie aus?
oder hab ich da wieder ein 'hirngespinnst' ?
leute ich hab ein problem:
ich verwuche zu lernen wie ich python programmieren muss.
da bin ich auf beispiel- und lern-seiten.
zb hier:
http://www.michael-holzapfel.de/progs/p ... n_kurz.htm
da wir dann zb erklärt wie ich
irgendwas mache und was dann dabei raus kommt:
zb:
ist soweit alles auch logisch und mir verständlich.
nun wollte ich damit 'spielen' oindem ich x = 8 mal bischen veränder, um das was ich gelernt hab mal 'gesehen zu haben' , also wie sich die print-ausgabe tatsächlich so ändert...
wenn ich dann das zwischen den #-zeichen kopiere in mein file 'funktionstest.py' kopiere und 'run' mache kommt:
Traceback (most recent call last):
File "C:\Users\geist4711\AppData\Local\Programs\Thonny\lib\ast.py", line 35, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "D:\rasbpi\funktionstest.py", line 1
x = 8
^
IndentationError: unexpected indent
was ist hier los? bin ich zu doof die paar zeilen code zu kopieren und auszuführen?
ich verwuche zu lernen wie ich python programmieren muss.
da bin ich auf beispiel- und lern-seiten.
zb hier:
http://www.michael-holzapfel.de/progs/p ... n_kurz.htm
da wir dann zb erklärt wie ich
irgendwas mache und was dann dabei raus kommt:
zb:
Code: Alles auswählen
if-elif-else Beispiel:
#-von mir eingefügt
x = 8
if x > 5:
print ("x ist größer als 5")
elif x < 5:
print ("x ist kleiner als 5")
else:
print ("x ist 5") #-von mir eingefügt
Ausgabe:
x ist größer als 5
nun wollte ich damit 'spielen' oindem ich x = 8 mal bischen veränder, um das was ich gelernt hab mal 'gesehen zu haben' , also wie sich die print-ausgabe tatsächlich so ändert...
wenn ich dann das zwischen den #-zeichen kopiere in mein file 'funktionstest.py' kopiere und 'run' mache kommt:
Traceback (most recent call last):
File "C:\Users\geist4711\AppData\Local\Programs\Thonny\lib\ast.py", line 35, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "D:\rasbpi\funktionstest.py", line 1
x = 8
^
IndentationError: unexpected indent
was ist hier los? bin ich zu doof die paar zeilen code zu kopieren und auszuführen?
Zuletzt geändert von geist4711 am Samstag 3. August 2019, 12:37, insgesamt 1-mal geändert.
is mir auch grad aufgefallen, da man nicht sieht wie ds da steht, habs geändert.
einrücken:
wenn ich das alles so einrücke das
x=8
so wie hier ganz links steht und alles danach ausgerichtet eingerückt ist, bleibt der fehler, leider.
wie soll ich denn was lernen wenn nichtmal sowas funktioniert?! tschuldigung bin grad echt sauer, auf mich, irgendwie hab ich da wohl ne blokade....
so sieht mein funktionstest.py aus:
einrücken:
wenn ich das alles so einrücke das
x=8
so wie hier ganz links steht und alles danach ausgerichtet eingerückt ist, bleibt der fehler, leider.
wie soll ich denn was lernen wenn nichtmal sowas funktioniert?! tschuldigung bin grad echt sauer, auf mich, irgendwie hab ich da wohl ne blokade....
so sieht mein funktionstest.py aus:
Code: Alles auswählen
x = 8
if x > 5:
print ("x ist größer als 5")
elif x < 5:
print ("x ist kleiner als 5")
else:
print ("x ist 5")
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@geist4711: Warum rückst Du das denn *so* ein? Was soll das denn bedeuten?
Die verlinkte Kurzübersicht ist irgendwo zwischen Python 2 und 3 – da stehen Sachen die gelten so nur für Python 2 und welche die für Python 3. Ohne das irgendwie zu kennzeichnen.
Die verlinkte Kurzübersicht ist irgendwo zwischen Python 2 und 3 – da stehen Sachen die gelten so nur für Python 2 und welche die für Python 3. Ohne das irgendwie zu kennzeichnen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
ich hab das so eingerückt weil der schreiber das auch so eingerückt hat und ich das so übernommen habe
ich wollte damit mal 'spielen' um zu lernen.
wenn da dann python 2 und 3 gemixt wird is das dämlich, also für mich nicht nutzbar.
mist!
kennst du ne deutsche seite wo man das besser lernen kann, wie man was in python macht?
und bitte nicht irgendwas von da:
https://py-tutorial-de.readthedocs.io/d ... lflow.html
bei dem versteh ich teilweise nichtmal was der von mir will, weil der nur irgendwelche bwl-kram behandelt wo mir nichtklar is was sowas soll
ich such was wo ich funktionen, also eingänge 'soundso' dann ausgänge 'soundso'
speichern, abfragen usw lernen kann, nicht steuerberechnungen oder wer wo wohnt usw
also technische dinge machen kann, nicht die prozente der steuer ausrechnen, da krieg ich hirn-krämpfe bei
ich wollte damit mal 'spielen' um zu lernen.
wenn da dann python 2 und 3 gemixt wird is das dämlich, also für mich nicht nutzbar.
mist!
kennst du ne deutsche seite wo man das besser lernen kann, wie man was in python macht?
und bitte nicht irgendwas von da:
https://py-tutorial-de.readthedocs.io/d ... lflow.html
bei dem versteh ich teilweise nichtmal was der von mir will, weil der nur irgendwelche bwl-kram behandelt wo mir nichtklar is was sowas soll
ich such was wo ich funktionen, also eingänge 'soundso' dann ausgänge 'soundso'
speichern, abfragen usw lernen kann, nicht steuerberechnungen oder wer wo wohnt usw
also technische dinge machen kann, nicht die prozente der steuer ausrechnen, da krieg ich hirn-krämpfe bei
hab's jetzt, nach ca einer std probieren, geschafft das es geht:
dein hinweis 'einrücken' war hilfreich DANKE
so müsste ds aussehen:
dann funktioniert das......
warum kann der das nicht gleich so da hinschreiben ?!
wie soll da ein anfänger dann was von lernen! ich könnt ko....!
tschuldigung, sowas regt mich einfach auf.
dein hinweis 'einrücken' war hilfreich DANKE
so müsste ds aussehen:
Code: Alles auswählen
x = 8
if x > 5:
print ("x ist größer als 5")
elif x < 5:
print ("x ist kleiner als 5")
else:
print ("x ist 5")
warum kann der das nicht gleich so da hinschreiben ?!
wie soll da ein anfänger dann was von lernen! ich könnt ko....!
tschuldigung, sowas regt mich einfach auf.
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__deets__: Na der Herr Holzapfel, wo das Beispiel her ist: http://www.michael-holzapfel.de/progs/p ... n_kurz.htm
@geist4711: Was man mit den Grunddatenstrukturen anstellen kann, wie man mit den Kontrollstrukturen umgeht, wie man Funktionen definiert und aufruft, und wie man Klassen definiert, sowie das Zusammenspiel von Python-Syntax und den ”magischen” Methoden mit den beiden führenden und abschliessenden Unterstrichen, ist unabhängig davon was man konkret damit machen will. Das offizielle Tutorial in der Python-Dokumentation hat also auch, oder sogar überwiegend Beispiele von Sachen, die ganz konkret am Ende nur sehr wenige damit machen werden. Es wäre aber auch unsinnige Zeitverschwendung für jedes Einsatzgebiet ein eigenes Grundlagentutorial zu schreiben, wo im Grunde ja doch immer das gleiche drin steht. Eine gewisse Übertragungsleistung ist auch eine Grundlage beim Programmieren. Denn wenn man immer nur Beispiele suchen muss die genau oder fast das machen was man selber braucht, dann ist das kein Programmieren.
Speziell bei dem Link zu dem Kontrollstrukturen ist doch aber kein ”BWL” in den Beispielen‽
Die verlinkte Seite bei Holzapfel ist ja auch nicht zum lernen der Grundlagen, sondern eine kurze Übersicht zum nachschlagen. Der geht halt davon aus das man a) weiss das Einrückung in Python wichtig ist und welche Bedeutung sie hat, und b) kann man Argumentieren das die Beispiele richtig eingerückt sind, wenn man nicht von der Annahme ausgeht das der Rand der Seite auch der Rand des Beispiels ist. Die sind halt alle für das Layout der Seite eingerückt, damit optisch nicht alles am rechten Rand klebt und sich die ”Überschriften” besser von den Code-Beispielen abheben. Bei einer etwas weniger minimalistisch gestylten Seite hätte man das wahrscheinlich mit einer Tabelle gelöst, wo die ”Überschrift” in der rechten Spalte und die Beispiele dazu in der linken Spalte stehen würde.
@geist4711: Was man mit den Grunddatenstrukturen anstellen kann, wie man mit den Kontrollstrukturen umgeht, wie man Funktionen definiert und aufruft, und wie man Klassen definiert, sowie das Zusammenspiel von Python-Syntax und den ”magischen” Methoden mit den beiden führenden und abschliessenden Unterstrichen, ist unabhängig davon was man konkret damit machen will. Das offizielle Tutorial in der Python-Dokumentation hat also auch, oder sogar überwiegend Beispiele von Sachen, die ganz konkret am Ende nur sehr wenige damit machen werden. Es wäre aber auch unsinnige Zeitverschwendung für jedes Einsatzgebiet ein eigenes Grundlagentutorial zu schreiben, wo im Grunde ja doch immer das gleiche drin steht. Eine gewisse Übertragungsleistung ist auch eine Grundlage beim Programmieren. Denn wenn man immer nur Beispiele suchen muss die genau oder fast das machen was man selber braucht, dann ist das kein Programmieren.
Speziell bei dem Link zu dem Kontrollstrukturen ist doch aber kein ”BWL” in den Beispielen‽
Die verlinkte Seite bei Holzapfel ist ja auch nicht zum lernen der Grundlagen, sondern eine kurze Übersicht zum nachschlagen. Der geht halt davon aus das man a) weiss das Einrückung in Python wichtig ist und welche Bedeutung sie hat, und b) kann man Argumentieren das die Beispiele richtig eingerückt sind, wenn man nicht von der Annahme ausgeht das der Rand der Seite auch der Rand des Beispiels ist. Die sind halt alle für das Layout der Seite eingerückt, damit optisch nicht alles am rechten Rand klebt und sich die ”Überschriften” besser von den Code-Beispielen abheben. Bei einer etwas weniger minimalistisch gestylten Seite hätte man das wahrscheinlich mit einer Tabelle gelöst, wo die ”Überschrift” in der rechten Spalte und die Beispiele dazu in der linken Spalte stehen würde.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
im prinziep ärgere ich mich ehr über meine eigene unflexilität, das ich mich von sowas deratt ablenken und aus dem konzept bringenlasse -früher wär mir sowas nicht passiert....
aber mal eine frage, ich 'bastel weitr an meinem beleuchtung-script.
so schaut es nu aus:
ich versuche immernoch das fahrlicht,
wenn ich das fernlicht aus machen will,
dabei ab zu fragen,
ob fahrlicht_schalter momentan gedrückt ist
und danach dann die helligeit von fahrlicht_vorn zu setzen.
fernlicht aus-code nochmal einzeln, mit möglichst ausführlichem komentar, was ich damit wollte:
momentan steht da ja, das falsche:
if fahrlicht_schalter = 1
das funktioniert nicht, gibt ein 'invalid syntax'
egal ob ich da ein
fahrlicht_schalter.when_pressed
oder
if_pressed
oder sonstwas hin mache,
nix geht.
wie bitte heisst die korrekte abfrage eines jetzigen schaltzustandes eines eingangs?
also NICHT
'beispielbutton.when pressed',
was ja soweit ich weiss heisst
'wenn gedrückt wird',
sonder die abfrage:
'ist es gerade gedrückt?'
aber mal eine frage, ich 'bastel weitr an meinem beleuchtung-script.
so schaut es nu aus:
Code: Alles auswählen
#!/usr/bin/python3
from gpiozero import LED, Button, PWMLED
from signal import pause
fahrlicht_schalter = Button(26) #lichtschalter
fernlicht_taster = Button(19) #fernlichtschalter
blinker_links_schalter = Button(13) #blinkschalter links
blinker_rechts_schalter = Button(6) #blinkschalter rechts
hupentaster = Button(5) #hupenschalter
bremslicht_taster = Button(10) #bremslichtschalter
startvalue = 0 # Helligkeit bei Skriptstart
fahrlicht_vorn = 0.6 #Abblendlicht vorn, wert
fernlicht_vorn = 1 #fernlicht vorn, wert
fahrlicht_hinten = 0.6 #fahrlicht hinten ,wert
bremslicht_hinten = 1 #bremslicht hinten, wert
led_licht_vorn = PWMLED(21,initial_value=startvalue) # Fahrlicht vorn
led_licht_hinten = PWMLED(20,initial_value=startvalue) # Fahrlicht hinten
led_blinker_links = LED(16) # blinker links
led_blinker_rechts = LED(12) # blinker rechts
led_hupe = LED(7) # hupe
def fernlicht():
if led_licht_vorn.value < 1: # wenn abgeblendet
led_licht_vorn.value = 1 # dann aufblenden
else: # sonst
led_licht_vorn.value = fernlicht_aus #
def fernlicht_aus():
if fahrlicht_schalter = 1
led_licht_vorn = fahrlicht_vorn
else
led_licht_vorn.value = startvalue
def fahrlicht_an():
led_licht_vorn.value = fahrlicht_vorn
led_licht_hinten.value = fahrlicht_hinten
def fahrlicht_aus():
led_licht_vorn.value = startvalue
led_licht_hinten.value = startvalue
def bremslicht_an():
led_licht_hinten.value = bremslicht_hinten
def bremslicht_aus():
led_licht_hinten.value = fahrlicht_hinten
def blinker_links():
led_blinker_links.blink (on_time = 0.8, off_time = 0.2)
def blinker_rechts():
led_blinker_rechts.blink (on_time = 0.8, off_time = 0.2)
bremslicht_taster.when_pressed = bremslicht_an
bremslicht_tatser.when_released = bremslicht_aus
fahrlicht_schalter.when_pressed = fahrlicht_an
fahrlicht_schalter.when_released = fahrlicht_aus
fernlicht_taster.when_pressed = fernlicht
blinker_links_schalter.when_pressed = blinker_links
blinker_links_schalter.when_released = led_blinker_links.off
blinker_rechts_schalter.when_pressed = blinker_rechts
blinker_rechts_schalter.when_released = led_blinker_rechts.off
hupe_taster.when_pressed = led_hupe.on
hupe_taster.when_released = led_hupe.off
pause()
wenn ich das fernlicht aus machen will,
dabei ab zu fragen,
ob fahrlicht_schalter momentan gedrückt ist
und danach dann die helligeit von fahrlicht_vorn zu setzen.
fernlicht aus-code nochmal einzeln, mit möglichst ausführlichem komentar, was ich damit wollte:
Code: Alles auswählen
def fernlicht_aus(): #funktion fernlicht aus
if fahrlicht_schalter = 1 # if, abfrage fahrlicht_schalter (-noch falsch-)
led_licht_vorn = fahrlicht_vorn #dann, led_licht_vorn auf fahrlicht_vorn helligkeit
else #sonst
led_licht_vorn.value = startvalue #led_licht_vorn auf standartvalue helligkeit
if fahrlicht_schalter = 1
das funktioniert nicht, gibt ein 'invalid syntax'
egal ob ich da ein
fahrlicht_schalter.when_pressed
oder
if_pressed
oder sonstwas hin mache,
nix geht.
wie bitte heisst die korrekte abfrage eines jetzigen schaltzustandes eines eingangs?
also NICHT
'beispielbutton.when pressed',
was ja soweit ich weiss heisst
'wenn gedrückt wird',
sonder die abfrage:
'ist es gerade gedrückt?'
danke!
also:
richtig?
muss nu erstmal mit frauchen einkaufen fahren.....
also:
Code: Alles auswählen
if: fahrlicht_schalter == 1 #abfrage fahrlicht_schalter
led_licht_vorn = fahrlicht_vorn # dann mache 'led_licht_vorn' auf 'fahrlich vorn'
else: #sonst
led_licht_vorn.value = startvalue #led auf startvalue
muss nu erstmal mit frauchen einkaufen fahren.....
Wenn Du Dich nicht an die Syntax von Python hältst, dann bekommst Du einen SyntaxError. Etwas Sorgfalt gehört zum Programmieren dazu.
Wie schon geschrieben, merkt man sich am besten den Zustand:
Wie schon geschrieben, merkt man sich am besten den Zustand:
Code: Alles auswählen
class Licht:
FAHRLICHT = 0.6
FERNLICHT = 1
BREMSLICHT = 1
def __init__(self):
self.led_licht_vorn = PWMLED(21, initial_value=0)
self.led_licht_hinten = PWMLED(20, initial_value=0)
self.fahrlicht_schalter = Button(26)
self.fahrlicht_schalter.when_pressed = self.fahrlicht_an
self.fahrlicht_schalter.when_released = self.fahrlicht_aus
self.fernlicht_taster = Button(19)
self.fernlicht_taster.when_pressed = self.fernlicht_an_aus
self.bremslicht_taster = Button(10)
self.bremslicht_taster.when_pressed = self.bremslicht_an
self.bremslicht_tatser.when_released = self.bremslicht_aus
self.fahrlicht = False
self.fernlicht = False
self.bremslicht = False
def fahrlicht_an(self):
self.fahrlicht = True
self.update()
def fahrlicht_aus(self):
self.fahrlicht = False
self.update()
def fernlicht_an_aus(self):
self.fernlicht = not self.fernlicht
self.update()
def bremslicht_an(self):
self.bremslicht = True
self.update()
def bremslicht_aus(self):
self.bremslicht = False
self.update()
def update(self):
if self.fernlicht:
self.led_licht_vorn.value = self.FERNLICHT
elif self.fahrlicht:
self.led_licht_vorn.value = self.FAHRLICHT
else:
self.led_licht_vorn.value = 0
if self.bremslicht:
self.led_licht_hinten.value = self.BREMSLICHT
elif self.fahrlicht:
self.led_licht_hinten.value = self.FAHRLICHT
else:
self.led_licht_hinten.value = 0
wow!
da schaut ja ganz anders aus als bei meinem gewusel.
nun zu verstehen dazu :
ganz oben setzt du die zustände für's die lichter, wenn sie an sind.
in
def __init__(self):
setzt du alle schalter und anfangs-parameter ein.
danach komme die anweisungen was wann passieren muss.
wie das
def update (self):
GENAU arbeitet ist mir noch nicht ganze klar
das muss ich mir ALLES erstmal ordentlich durchlesen und verstehen lernen
danke für diesen lösungsansatz.
ich muss noch viel viel lernen
morgen wenn ich wieder 'frischer drauf bin' schau ich mir das sehr sehr sorgfälltig an und wenn ich meine ich weiss was da alles passiert,
probier ich mal vorsichtig, mit einer kopie davon(!), den blinker dazu zu nehmen (bitte nicht vormachen sonst lern ich das ja nicht wie man das zusammenbastelt ich schrei dann schon und frage wenn ich's nicht hinkriege -relativ wahrscheinlich .......
danke danke noch mal!
und für heute is genuch, es qualmt der kopf ............
da schaut ja ganz anders aus als bei meinem gewusel.
nun zu verstehen dazu :
ganz oben setzt du die zustände für's die lichter, wenn sie an sind.
in
def __init__(self):
setzt du alle schalter und anfangs-parameter ein.
danach komme die anweisungen was wann passieren muss.
wie das
def update (self):
GENAU arbeitet ist mir noch nicht ganze klar
das muss ich mir ALLES erstmal ordentlich durchlesen und verstehen lernen
danke für diesen lösungsansatz.
ich muss noch viel viel lernen
morgen wenn ich wieder 'frischer drauf bin' schau ich mir das sehr sehr sorgfälltig an und wenn ich meine ich weiss was da alles passiert,
probier ich mal vorsichtig, mit einer kopie davon(!), den blinker dazu zu nehmen (bitte nicht vormachen sonst lern ich das ja nicht wie man das zusammenbastelt ich schrei dann schon und frage wenn ich's nicht hinkriege -relativ wahrscheinlich .......
danke danke noch mal!
und für heute is genuch, es qualmt der kopf ............
so weiter geht's....
habe den code komplett kopiert und mit allen einrückungen in eine neue datei übernommen.
nur die zeilen:
#!/usr/bin/python3
from gpiozero import LED, Button, PWMLED
habe ich ganz oben rein gechrieben, weil sonst weiss ja das script nicht, das es gpiozero, buttons etc. nutzen soll.
der code funktioniert nicht.
wenn ich ihn recht verstanden habe, sollte er es aber -eigentlich.
ich mutmaße mal das noch etwas fehlt, was für nicht-anfänger selbstverständlich ist.
für mich leider, noch nicht .
kann mir da jemand einen hinweis geben?
sonst fang ich wieder das rumpobieren an und verwirre mich nur selbst(im prinzip hab ich das schon, hab schon einiges probiert in einer extra-kopie um das original nicht kaputt zu machen)
jetzt gibt es aber erstmal essen und dann müssen wir zu einem notfall der meerschweinchen-nothilfe-hamburg, paar schweine retten....
heut abend geht's dann evtl weiter.
habe den code komplett kopiert und mit allen einrückungen in eine neue datei übernommen.
nur die zeilen:
#!/usr/bin/python3
from gpiozero import LED, Button, PWMLED
habe ich ganz oben rein gechrieben, weil sonst weiss ja das script nicht, das es gpiozero, buttons etc. nutzen soll.
der code funktioniert nicht.
wenn ich ihn recht verstanden habe, sollte er es aber -eigentlich.
ich mutmaße mal das noch etwas fehlt, was für nicht-anfänger selbstverständlich ist.
für mich leider, noch nicht .
kann mir da jemand einen hinweis geben?
sonst fang ich wieder das rumpobieren an und verwirre mich nur selbst(im prinzip hab ich das schon, hab schon einiges probiert in einer extra-kopie um das original nicht kaputt zu machen)
jetzt gibt es aber erstmal essen und dann müssen wir zu einem notfall der meerschweinchen-nothilfe-hamburg, paar schweine retten....
heut abend geht's dann evtl weiter.
jetzt geht's weiter....
ich finde den ansatz mit class, also klassen interessant, weil dann könnte ich ja später die gangschaltung auch in eine class setzen, ähnlich dem licht jetzt und eine class=schaltung dazu setzen wodurch licht und schaltung schön getrennt wären, aber zusammen in einem script...
dazu müsste ich aber das mit dem was da gemacht wurde genauer verstehen(was ich schon recht weit tuhe, wenn ich das richtig sehe)
nur es läuft nicht
ich werde jetzt mal mit komentaren dazu schrieben was ich sehe, was welche zeile tut, evtl ergibt sich für andere dann ja etwas was ich nicht sehe(oder ich falsch verstanden habe) und man mir da auf die sprünge helfen kann....
bis auf 'self.fernlicht = not self.fernlicht' meine ich also eigentlich alles zu verstehen, wobei ich mich wohl täusche, weil, es läuft zwar fehlerfrei(also ohne fehlermeldungen) aber tut nix .
wo liegt mein denkfehler, was hab ich nicht beachtet oder vergessen um das dazu zu bringe das es auch was tut?
ich wollte sonst versuchen SELBER den bremslicht-button samt led(eigentlich ja einen ausgang high/low setzen) mal da mit ein zu bauen.
ich finde den ansatz mit class, also klassen interessant, weil dann könnte ich ja später die gangschaltung auch in eine class setzen, ähnlich dem licht jetzt und eine class=schaltung dazu setzen wodurch licht und schaltung schön getrennt wären, aber zusammen in einem script...
dazu müsste ich aber das mit dem was da gemacht wurde genauer verstehen(was ich schon recht weit tuhe, wenn ich das richtig sehe)
nur es läuft nicht
ich werde jetzt mal mit komentaren dazu schrieben was ich sehe, was welche zeile tut, evtl ergibt sich für andere dann ja etwas was ich nicht sehe(oder ich falsch verstanden habe) und man mir da auf die sprünge helfen kann....
Code: Alles auswählen
#!/usr/bin/python3 #ort python interpreter
from gpiozero import LED, Button, PWMLED #nimmt bibliothek 'gpiozero' und davon 'led, button und pwmled' rein
from signal import pause #nimmt pause aus signal' mit rein
class Licht: #klassenangabe 'Licht'
FAHRLICHT = 0.6 #pwm-wert licht
FERNLICHT = 1 #pwm-wert fernlicht
BREMSLICHT = 1 #pwm-wert bremslicht
def __init__(self): #initialisierung aller taster, schalter led's usw, für self
self.led_licht_vorn = PWMLED(21, initial_value=0) #led licht vorn mit anfangs-helligkeit
self.led_licht_hinten = PWMLED(20, initial_value=0) #led licht hinten mit anfangswert
self.fahrlicht_schalter = Button(26) fahrlichtschalter
self.fahrlicht_schalter.when_pressed = self.fahrlicht_an #wenn button gedrückt führe 'self.fahrlicht_an' aus
self.fahrlicht_schalter.when_released = self.fahrlicht_aus #wenn button losgelassen führe 'self.fahrlicht_aus' aus
self.fernlicht_taster = Button(19) #fernlicht-button
self.fernlicht_taster.when_pressed = self.fernlicht_an_aus #wenn button gedrückt führe 'self.fernlicht_an' aus
self.bremslicht_taster = Button(10) #bremslicht-button
self.bremslicht_taster.when_pressed = self.bremslicht_an #wenn button gedrückt führe 'self.bremslicht_an' aus
self.bremslicht_tatser.when_released = self.bremslicht_aus #wenn button losgelassen führe 'self.fernlicht_aus' aus
self.fahrlicht = False # ist-wert 'fahrlicht'
self.fernlicht = False # ist-wert 'fernlicht'
self.bremslicht = False # ist-wert 'bremslicht'
def fahrlicht_an(self): #funktion für fahrlicht an
self.fahrlicht = True #setze self.fahrlicht auf 'TRUE'
self.update() #führe self.update aus
def fahrlicht_aus(self): #funktion fahrlicht aus
self.fahrlicht = False #setze fahrlicht auf 'false'
self.update() #führe update aus
def fernlicht_an_aus(self): #funktion fernlich an
self.fernlicht = not self.fernlicht #fernlicht oder nicht fernlicht -genaue bedeutung unklar
self.update() #führe update aus
def bremslicht_an(self): #funktion bremslicht an
self.bremslicht = True #setze bremslich auf true
self.update() #führe update aus
def bremslicht_aus(self): #funktion bremslicht aus
self.bremslicht = False #setze bremslicht auf false
self.update() #führe update aus
def update(self): #funktion update
if self.fernlicht: #wenn(if) fernlicht angesprochen wird
self.led_licht_vorn.value = self.FERNLICHT # nehme wert von FERNLICHT und setze ihn bei led_licht_vorn.value ein
elif self.fahrlicht: #ausserdem wenn fahrlicht angesprochen wird
self.led_licht_vorn.value = self.FAHRLICHT #nehme wert von FAHRLICHT und setze ihn bei led_licht_vorn.value ein
else: #sonst
self.led_licht_vorn.value = 0 #setze led_licht_vorn auf value 0
if self.bremslicht: #wenn bremslicht angesprochen wird
self.led_licht_hinten.value = self.BREMSLICHT #nehme wert von BREMSLICHT und setze den für led_licht_hinten.value ein
elif self.fahrlicht: #ausserdem wenn fahrlicht angesprochen wird
self.led_licht_hinten.value = self.FAHRLICHT #nehme wert von FAHRLICHT und setze ihn bei led_licht_hinten.alue ein
else: #sonst
self.led_licht_hinten.value = 0 #setze led_licht_hinten auf value 0
#müsste hier nicht 'pause()' stehen
das das script nicht nur einmal
durchläuft und sich dann beendet?
-so habe ich die erklärungen dazu jedenfalls verstanden......-
wo liegt mein denkfehler, was hab ich nicht beachtet oder vergessen um das dazu zu bringe das es auch was tut?
ich wollte sonst versuchen SELBER den bremslicht-button samt led(eigentlich ja einen ausgang high/low setzen) mal da mit ein zu bauen.