Seite 1 von 1

Problem bei If Schleife

Verfasst: Freitag 13. Mai 2022, 08:48
von Schlangenmensch
Hallo, ich stehe mal wieder etwas auf dem Schlauch.

ich habe folgenden Code erstellt, und will damit erreichen, dass wenn der Sensor 5 mall hintereinander den Wert kleiner als 3000 liest, das Programm für 10 Sekunden pausiert, die Variable auf 0 setzt und dann normal weiterläuft. Das Problem ist, dass ich mit meinen if Anweisungen das Programm aufschaukle und jeder Eingang am Sensor hochgezählt wird und nicht die die direkt aufeinander folgen.

Könnt Ihr mir einen Tip geben?

Code: Alles auswählen

if MOVE.read_u16() < 30000: #Freq sollte vorher getestet werden.
            
            print("1")
            LED.value(1)
            
            
        
            file = open("red.txt", "a")
            file.write(str(hr) + ":" + str(m) + ":" + str(s) + " : "  )
            file.write(str(Y) + ":" + str(M) + ":" + str(D) + " : " + "\n" )
            file.close()
            i = i + 1
            
             
            sleep(1)
            
            if i >= 5:
                i = i - 5
                sleep(10)
                
            
            
            
       
            
               if MOVE.read_u16() > 30000: #Freq sollte vorher getestet werden.
                i = i - 1
                print("0")
                LED.value(0)
                
            
            
                sleep(1)

Re: Problem bei If Schleife

Verfasst: Freitag 13. Mai 2022, 09:07
von Schlangenmensch
Sorry, hätte selber drauf kommen können. i = 0 :oops:

Re: Problem bei If Schleife

Verfasst: Freitag 13. Mai 2022, 09:14
von Schlangenmensch
....und an das with Statement hätte ich auch noch denken können.

Re: Problem bei If Schleife

Verfasst: Freitag 13. Mai 2022, 09:18
von Sirius3
Eingerückt wird immer mit 4 Leerzeichen pro Eben, da stimmt also was bei Dir nicht.
Leerzeilen sollen die Lesbarkeit erhöhen, bei einzelnen Zeilen in großer Leere hindert mich das aber am Lesen.
Dateien öffnet man mit with. Einbuchstabige Variablennamen sind nichts-sagend, hr, m, s, Y,M und D scheinen wohl irgendwas mit einem Datum zu tun haben. Dafür gibt es in Python datetime, das das Datum auch richtig formatiert ausgibt. Irgendwelche Zahlen per : getrennt ist keine Form, wie man ein Datum formatieren sollte.
Variablennamen werden komplett klein geschrieben. GROSS ist für Konstanten reserviert, Du hast aber keine Konstanten.
Wenn Du 5 aufeinanderfolgende Werte < 3000 haben willst, dann mußt Du wohl bei >=3000 i gleich auf 0 setzen und nicht nur um eins verringern.
Wenn man zweimal den Sensor ausliest, dann hat man zwei unabhängige Werte.

Code: Alles auswählen

frequency = MOVE.read_u16()
if frequency < 30000:
    print("1")
    LED.value(1)

    with open("red.txt", "a") as file:
        file.write(f"{some_date:%Y-%m-%d H:%M:%S} : \n")

    i = i + 1
    if i >= 5:
        i = 0
        sleep(9)
elif frequency > 30000:
    print("0")
    LED.value(0)
    i = 0
sleep(1)

Re: Problem bei If Schleife

Verfasst: Freitag 13. Mai 2022, 09:19
von ThomasL
(anknüpfend an den Post vor Sirius)

....und daran das es keine if-Schleifen gibt. ;-)

Re: Problem bei If Schleife

Verfasst: Freitag 13. Mai 2022, 09:46
von Schlangenmensch
Danke Euch für die Antworten und bitte um Verzeihung, das ich nicht auf das Einrücken geachtet habe und mal wieder das with Statement weggelassen habe obwohl ich schon mehrmals darauf hingewiesen worden bin.

Ich hoffe das ich dass bald mal verinnerlicht habe.

Wünsche Euch ein schönes Wochenende.