pwm-gesteuerte LED's

  • ich verstehe das bestimmt nicht als 'meckern' sondern ehr hilfreiche kritik.

    derzeit sind sicher zuviele komentare drin, aber, das hilft mir momentan noch :)

    aufräumen werde ich den kram auch noch, also das rauswerfen, was nicht gebraucht wird, ABER, ich bin nochnicht ganz fertig damit und muss noch bischen spielen und lernen :)

    dazu gehört auch eine leichte änderung noch, zb was das 'fernlicht' angeht, das soll tatsächlich noch ehr auto-mässig werden.

    man macht manchmal halt auch zuviel wenn man 'umstellt' :)

    oder überlegt es sich später noch anders an der ein oder anderen stelle...

    auf jeden fall macht es spaß und ich lerne dazu.

    muss auchnoch die geplante hupe mit rein nehmen zb :)

    und mir schwebt schon eine erweiterung vor:

    leuchweitenregulieren.

    mit kleinem motor vom display aus einstellbar wie hoch die vorderen lampen eingestellt sind.

    also gibt es wohl auch mal ne art 'programm-gui' wo ich das dann mit 2 knöpfen (hoch/runter) schalten kann.

    und wer weiss was mir noch einfällt...

    meine optokoppler sind nun auch da und ich kann somit mit der miniplatine anfangen um die koppler und fet's zu verbauen, das ich die 12v-lkw-leuchten(die haben auch eine zulassung laut stvo) ansteuern kann.

    naja und den lion-akkupack mit spannungswächter.....


    es gibt noch viel zu tun.... :)

  • nun stellt sich mir die nächste frage:

    es gibt ja einen befehl nenn ich das jetzt mal, wo man 'blink' beeinflussen kann:

    Code
    blink(on_time = 0.8, off_time = 0.2) 

    wenn ich das in zeile 82 und 85 in meinem code ergänze, gibts ne fehlermeldung

    bzw beim start blinken die led's dann in der geänderten zeitfolge, aber die eigentliche funktion ist 'weg'....

    also man lässt den code laufen, die led's blinken, man stellt die ab und kann sie nimmer ansprechen.

    wie schreib ich solche sachen 'korrekt' rein, also die blinkzeit vom defaul abweichend einstellen?

    • Offizieller Beitrag

    Stichwort Funktionen. ;) Also:

    Code
    def blinker_rechts():
        led4.blink(on_time=0.8, off_time=0.2)
    
    button4.when_pressed = blinker_rechts
    button4.when_released = led4.off

    Zum Ausschalten brauchst Du ja keine Funktion, da reicht led4.off.

  • oki, das schaut sinnig aus.

    probier ich gleich wenn ich wieder drn bastel, danke!

    da kommt mir ein gedanke: hab ja schon, in einem neuen script, mal mit dem servo gespielt....

    krieg den auch angprochen, mit

    while True:

    servo_min

    sleep()

    servo_mid

    usw....

    aber direkt 'per button' steuern will noch nicht.

    wenn ich jetzt aber, ähnlich deinem beispiel:

    Code
    def servo-max():
        servo value=1
    
    button1.when pressed = servo-max

    sollte das doch auch gehen?

    direkt nur : button1.when_pressed..... geht nämlich nicht, kommt nix :)

  • korrekte schreibweise wäre gewesen:

    servo.value = 1

    -hier stand mist!-

    abgesehen von der schreibweise, weil ich den servo falsch anspreche...

    hab das script mit der min mid und max position mal abgeschrieben und des funktioniert soweit, so ganz begreif ich noch nicht wie eine einzelne positionierungsanweisung funktioniert, aber dazu später weiter, siehe nächster beitrag...

    2 Mal editiert, zuletzt von geist4711 (27. Juli 2019 um 18:55)

  • nächste kleinigkeit:

    hab das fahrlicht nun wieder zurück-gescriptet, das das fernlicht wie beim auto funktioniert.

    zwei dinge zeigen sich noch beim durchprobieren:

    fernlicht auschalten bewirkt, das licht immer auf value =0.5 zurück geht -klar, stand da ja auch...

    das selbe wenn man das bremslicht wieder abstellt, auch klar, steht ja auch da.

    nun wollte ich den fahrlichtschalter(button1) beim abschalten vom fernlicht mit einbeziehen.

    dafür hab ich 'def fernlicht_aus' reingescriptet.

    dieser soll button1 abfragen ob gedrückt oder nicht um dann entsprechend value 0.5(fahrlicht) oder eben value0.2(startvalue) zu setzen, jenachdem ob lich eingeschaltet ist oder nicht.

    hier mein code

    neuester code ab zeile 33:

    wenn das für das fernlicht klappt, will ich das für's bremslicht auch einbauen.

    wie binde ich die abfrage von fahrlichtschalter(button1) bitte korrekt ein?

    Einmal editiert, zuletzt von geist4711 (27. Juli 2019 um 18:27)

    • Offizieller Beitrag

    Das verstehe ich nicht so ganz. Was willst Du genau erreichen?

    - Licht komplett aus, nur Lichthupe möglich

    - und wenn Licht ein, dann auf- und abblenden möglich

    Verstehe ich das so richtig?

    startvalue habe ich gewählt um gleich das Fahrlicht zur Verfügung zu haben. Das könntest Du auch gleich auf den Wert von fahrlicht stelllen.

    Btw. Eingerückt wird immer mit 4 Leerzeichen!

  • Btw. Eingerückt wird immer mit 4 Leerzeichen!

    oh! das werde ich mir merken.

    ja hab deine intension damit auch so verstanden, daran ist auch nichts ein zu wenden und alles funktioniert super!

    ich wollte nun diese startvalue nutzen das man beim einschalten schon ein schwaches leuchten hat, um zu sehen ob alle lichter, ausser blinker oki sind und dann 'darüber' das fahr- und fernlicht gelegt (fahr- und bremslicht hinten genauso).

    DANN ergibt sich beschriebenes verhalten, das beim ausschalten von brems- und fernlicht die 'logik' nicht weiss wo hin sie zurück schalten soll, auf 'startvalue' oder 'fahrlicht'.

    so kam ich darauf den schalter für's fahrlicht abfragen zu wollen, das der dann sagt: fahrlicht ist an also auf fahrlicht zurück oder fahrlicht ist aus also auf startvalue zurück schalten.

    so könnte ich da später auch eine 'notlicht funktion' anhand der spannungsüberwachung die später kommen soll realisieren, das das licht nicht ganz weg ist sondern wenigstens noch etwas glimmt ;)

    • Offizieller Beitrag

    Also habe ich das doch richtig verstanden. Dazu müsstest Du beim Lichteinschalten (Fahrlich) ein Flag (eine Variable mit 0 oder 1) setzen und dann in der jeweiligen Funktion abfragen. Also z.B. in der Funktion bremslicht_aus():

    Code
    Wenn Licht an, dann led2.value = fahrlicht_hinten 
    sonst  led2.value = startvalue

    Das wäre zumindest mein erster Gedanke.

  • ja, irgendwas wo ich quasie den 'ist zustand' speichern kann, den ich dann später wieder abfrage.

    wie setze ich solche flags und lese die aus?

    das könnte ich dann später auch beim servo so machen, um mit 2 knöpfen die 8 gänge durchschalten zu können.

  • Hallo,

    Zitat

    wie setze ich solche flags und lese die aus?

    Kommt drauf an, wie das Programm geschrieben ist und wie komplex das Programm ist. Wenn du keine dauerhafte Persistenz brauchst (also auch über den Neustart des Rechners hinweg), wäre der Weg über eine Klasse und deren Attribute ein weg.

    Gruß, noisefloor

  • geschrieben ist das ganze ja in python.

    mit de persistenz, hmm, je nachdem wie man das realisiert, bräuchte es das, oder auch nicht.

    im angesprochenen fall der beleuchtung, und auch der e-schaltung, könnte man einen startwert setzen von dem aus die sachen immer aus gehen.

    bei der beleuchtug schon realisiert mit 'starvalue'.

    bei der e-schaltung wäre das auch recht praktisch, da man ja meist ert gerade losfahren will nach dem einschalten.

    ich gehe also davon aus, das ich so verfahre das zum anfang ein 'startvalue' gesetzt wird.

    wie ginge das mit den klassen und attributen?

    kann man die wert dann auch für eine anzeige auf dem display, wenn es dann mal eine gui dazu geben sollte auslesen?

  • danke noisefloor

    wie ich schon an anderer stelle schrieb, hat das mit meiner schreibschwäche, oder korrekter konzentrations-schwäche (krankheit) zu tun, das ich schreibe wie ich schreibe, wenn dich das so immens stört, tut mir das leid....

  • wie ich schon an anderer stelle schrieb, hat das mit meiner schreibschwäche, oder korrekter konzentrations-schwäche (krankheit) zu tun, das ich schreibe wie ich schreibe, wenn dich das so immens stört, tut mir das leid....

    Und du bist tatsächlich nie auf die Idee gekommen, dass es dafür im 21. Jahrhundert sicherlich automatisierte Lösungen gibt?! Das wundert mich doch sehr.

    Auf die Schnelle findet sich da:

    https://languagetool.org/ (Open Source: https://github.com/languagetool-org/languagetool)

    https://www.grammarly.com/

    Permanent möchte man ein solches Addon nicht alle Texteingaben mitlesen lassen, aber es lässt sich ja bei Bedarf aktivieren.

    Dir fällt es schwer, den Text zu schreiben, uns fällt es schwer, ihn zu lesen. Weil du aber Hilfe möchtest, solltest du diese Situation für uns lösen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!