Hey Leute,
habe aktuell ein kleines Problem beim Programmieren.
Ich möchte eine Funktion Aufrufen und diese soll mit einem bestimmten Bitmuster von einem Istwert auf einen bestimmten Sollwert zählen.
In meiner Schleife läuft auch alles ordentlich nach dem Muster ab, allerdings möchte ich am Ende der Schleife meine aktuellen Werte, welche zuletzt im Bitmuster abgelaufen wurden übergeben.
Mein Code:
from itertools import cycle
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(13, GPIO.OUT)
GPIO.output(13, GPIO.LOW)
GPIO.setup(19, GPIO.OUT)
GPIO.output(19, GPIO.LOW)
GPIO.setup(26, GPIO.OUT)
GPIO.output(26, GPIO.LOW)
delay_encoder = 0.1
def EncoderInkr():
ist_wert = 0
soll_wert = 5
out_values = [1,1,0,0]
if ist_wert > soll_wert:
GPIO.output(13,1)
time.sleep(delay_encoder)
GPIO.output(13,0)
previous_out = out_values[-1]
for i, out in zip(range(ist_wert, soll_wert), cycle(out_values)):
print(i, " out", out, "\n",
"previous_out", previous_out, "\n",
"ist_wert", ist_wert, "\n")
time.sleep(delay_encoder)
GPIO.output(26, out)
time.sleep(delay_encoder)
GPIO.output(19, previous_out)
ist_wert += 1
previous_out = out
if ist_wert == soll_wert:
GPIO.output(13,1)
time.sleep(delay_encoder)
GPIO.output(13,0)
print(out_values, out, previous_out)
return out, previous_out, out_values
command = EncoderInkr()
print("out_values =", command[2], "out =", command[0], ";", "previous_out =", command[0])
command = EncoderInkr()
print("out_values =", command[2], "out =", command[0], ";", "previous_out =", command[0])
Alles anzeigen
Also mein return liefert zwar die richtigen Werte, welche mein out und mein previous_out haben und auch beim nächstmaligen Funktion bekommen müssen, aber ich stehe aktuell total auf dem Schlauch wie ich die Werte in meine out_values bekomme...
Mein Print soll eigentlich wie folgt aussehen:
0 out 1
previous_out 0
ist_wert 0
1 out 1
previous_out 1
ist_wert 1
2 out 0
previous_out 1
ist_wert 2
3 out 0
previous_out 0
ist_wert 3
4 out 1
previous_out 0
ist_wert 4
Wenn ich jetzt meine Funktion nochmal starte soll es eigentlich so weitergehen...
0 out 1
previous_out 1
ist_wert 0
1 out 0
previous_out 1
ist_wert 1
2 out 0
previous_out 0
ist_wert 2
3 out 1
previous_out 0
ist_wert 3
4 out 1
previous_out 1
ist_wert 4
Habe halt an Shiften gedacht nur meine aktuellen versuche die Werte an meine out_values zu übergeben sind leider gescheitert..
Mfg
mochtend