【发布时间】:2017-05-28 04:24:19
【问题描述】:
我刚刚开始使用 Raspberry PI 3。所以我的第一个项目是一辆遥控车,我用键盘控制它。不幸的是,我遇到了一些问题。
目前,我使用time.sleep() 函数来限制每个案例的执行时间。否则汽车会一直执行这种情况,直到我按 Enter 键。但我希望 pi 是否可以读取我按下按键的时间并在特定的时间长度内执行该功能。
例如,如果我按向上键 2 秒,汽车将前进 2 秒。这是我的代码:
import curses
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)
screen = curses.initscr()
curses.noecho()
curses.cbreak()
screen.keypad(True)
try:
while True:
char = screen.getch()
if char == ord('q'):
break
elif char == curses.KEY_UP:
GPIO.output(7,True)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
time.sleep(.25)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == curses.KEY_DOWN:
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,True)
time.sleep(.25)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == curses.KEY_RIGHT:
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,True)
GPIO.output(15,False)
time.sleep(.25)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == curses.KEY_LEFT:
GPIO.output(7,True)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
time.sleep(.25)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == ord('w'):
GPIO.output(7,True)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
time.sleep(.1)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == ord('d'):
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,True)
GPIO.output(15,False)
time.sleep(.1)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == ord('s'):
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,True)
time.sleep(.1)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
elif char == ord('a'):
GPIO.output(7,True)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
time.sleep(.1)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,False)
finally:
curses.nocbreak(); screen.keypad(0); curses.echo()
curses.endwin()
GPIO.cleanup()
我是 python 新手,希望有人能帮助我。
【问题讨论】:
-
假设我按下前进键 2 秒,是在我完成按下相应任务之后,还是在按下期间?
-
如果没有按下任何按钮,该任务必须执行,或者更确切地说,输出应该处于什么状态?
-
所有输出都应该是0。在Arduino平台上的同一个项目的情况下,当我停止按下同一个应用程序上的按钮时,我曾经从一个应用程序发送一个特定的字符来停止汽车。我希望我能用 raspberry pi rc car 做同样的事情。
标签: python raspberry-pi3