如何让我的代码循环直到按下按钮(乐高 EV3)

问题描述 投票:0回答:2

这个问题纯粹而简单。我尝试过使用 while 循环,重新排列代码,但所发生的只是当我按下按钮时程序启动或根本不执行任何操作。谁能看到我做错了什么吗?

#!/usr/bin/env python3
from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C
from ev3dev2.button import Button
from ev3dev2.sound import Sound
from time import sleep
import time

sound = Sound()
btn = Button()
tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)

def movement(left_speed, right_speed, rotations):
tank_pair.on_for_rotations(left_speed, right_speed, rotations, brake=True, block=True)


while not btn.any():
movement(20,20,10)
movement(-100,0,1.5)
movement(20,20,10)
sleep(0.01)

while btn.any():
sleep(0.01)
tank_pair.off()
sound.beep()
exit()
python robotics lego-mindstorms lego-mindstorms-ev3
2个回答
0
投票

你可以用这个来打破你的主循环

pip install keyboard

然后

import keyboard

while True:
    # do something
    if keyboard.is_pressed("q"):
        print("q pressed, ending loop")
        break

0
投票

您的缩进不正确。

from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C
from ev3dev2.button import Button
from ev3dev2.sound import Sound
from time import sleep
import time

sound = Sound()
btn = Button()
tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)

def movement(left_speed, right_speed, rotations):
    tank_pair.on_for_rotations(left_speed, right_speed, rotations,       brake=True, block=True)


while not btn.any():
    movement(20,20,10)
    movement(-100,0,1.5)
    movement(20,20,10)
    sleep(0.01)

while btn.any():
    sleep(0.01)
    tank_pair.off()
    sound.beep()
    exit()

© www.soinside.com 2019 - 2024. All rights reserved.