0
간단한 프로그램을 만들려고하는데, 'w'를 올리면 forward()
을 사용하지만 앞으로 나가면 stop()
을 사용하여 모터를 멈 춥니 다. 현재는 'w'를 누르면 계속 진행하고 다른 키를 누르면 멈출 수 있습니다. 다음은 내 코드키를 누른 상태에서 파이썬 기능을 실행하는 방법은 무엇입니까?
#!/usr/bin/env python3
# so that script can be run from Brickman
import termios, tty, sys, time
from ev3dev.ev3 import *
# attach large motors to ports B and C, medium motor to port A
motor_left = LargeMotor('outA')
motor_right = LargeMotor('outD')
motor_a = MediumMotor('outC')
#==============================================
def getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setcbreak(fd)
ch = sys.stdin.read(1)
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
#==============================================
def fire():
motor_a.run_timed(time_sp=3000, speed_sp=600)
#==============================================
def forward():
motor_left.run_forever(speed_sp=1050)
motor_right.run_forever(speed_sp=1050)
#==============================================
def back():
motor_left.run_forever(speed_sp=-1050)
motor_right.run_forever(speed_sp=-1050)
#==============================================
def left():
motor_left.run_forever(speed_sp=-1050)
motor_right.run_forever(speed_sp=1050)
#==============================================
def right():
motor_left.run_forever(speed_sp=1050)
motor_right.run_forever(speed_sp=-1050)
#==============================================
def stop():
motor_left.run_forever(speed_sp=0)
motor_right.run_forever(speed_sp=0)
#==============================================
print("ready")
k = getch()
print(k)
if k == 'w':
forward()
if k == 's':
back()
if k == 'a':
left()
if k == 'd':
right()
if k == 'f':
fire()
if k == ' ':
stop()
if k == 'q':
stop()
exit()
그렇게 중지하는 방법에 어떤 생각() 'W'밀리지 않은 경우 실행입니까?