Это код:
def check_ultra():
global arduinoSerialData, y, i, x
while True:
if arduinoSerialData.inWaiting() > 1:
myData = arduinoSerialData.readline()
myData = str(myData)
myData = myData.replace("b'", '')
myData = myData.replace("\\r\\n'", str(0))
myData = myData.replace("\\r00.000", str(0))
myData = myData.replace("\\r00.000", str(0))
if "c" in myData:
myData = myData.replace("c", str(0))
if y == 1:
y = 3
if float(myData) > 15:
x = 0
return y, x
else:
if float(myData) < 15 and float(myData) > 1:
y = 1
x = 0
return y, x
elif "a" in myData:
myData = myData.replace("a", str(0))
if y == 2:
y = 3
if float(myData) > 15:
x = 0
return y, x
else:
if float(myData) < 15 and float(myData) > 1:
y = 2
x = 0
return y, x
else:
y = 0
return y
set_servo1_angle(0)
set_servo2_angle(90)
go_out_count = 0
m1 = 0
count = 3
y = 0
i = 0
x = 0
while y == None or y == 0 or x == 1:
# i = 0
# y = None
check_ultra()
if y == 1 and x == 0:
print("1")
sleep(2)
elif y == 2 and x == 0:
print('2')
sleep(2)
В настоящее время он печатает 1 каждый раз, когда датчик 1 заблокирован, но затем завершает код. Я хочу сделать так, чтобы каждый раз, когда я блокирую датчик, он печатал соответствующий оператор печати, независимо от того, сколько раз я блокирую датчик. Я пытался добавить много переменных, чтобы помочь, но они не работали. Как сделать так, чтобы цикл повторялся?
y==1
иx==0
цикл напечатается, а затем все условия while станут ложными, поэтому программа завершится. Сделайте этот последний цикл более похожим наwhile True:
, если хотите, чтобы он продолжал повторяться. - person barny   schedule 09.08.2020