我目前正在使用枢轴 pi 通过单击向上或向下箭头键来旋转伺服器,但由于某种原因,我必须单击向上箭头键三次才能移动(与向下箭头键相同(,我不知道为什么,我只想让它只需单击一次即可让舵机移动。
from pivotpi import *
from time import sleep
import curses
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1)
stdscr.refresh()
key = ""
mp = PivotPi()
a = 0
while key != ord("e"):
key = stdscr.getch()
stdscr.refresh()
mp.angle(SERVO_1, a)
if key == curses.KEY_UP: #close
a += 180
print(a)
elif key == curses.KEY_DOWN: #open
a -= 180
print(a)
curses.endwin()
我假设您的代码中的这些特征是无意的:
- 当按下除 [e] 以外的任何键时,总是调用
mp.angle
。 - 传递给
mp.angle
的值始终是打印角度后面的一次按键。a
的初始值仅在第一次按键后传递。
这些问题可以按如下方式修复:
from pivotpi import *
from time import sleep
import curses
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1)
stdscr.refresh()
key = ""
mp = PivotPi()
a = 0
mp.angle(SERVO_1, a) # initialise before listening for keypresses
while key != ord("e"):
key = stdscr.getch()
stdscr.refresh()
if key == curses.KEY_UP: #close
a += 180
elif key == curses.KEY_DOWN: #open
a -= 180
else:
continue
print('rn%dr' % a) # print to the left side of the terminal
mp.angle(SERVO_1, a)
curses.endwin()