【问题标题】:Controlling step motor using arrows使用箭头控制步进电机
【发布时间】:2021-05-25 19:44:06
【问题描述】:

我在树莓派上做一个程序,我可以使用键盘箭头控制电机。为此,我使用 GPIO Zero 模块作为键​​盘控制机器人的示例。我设法根据需要更新了代码,但是当我按下按键时,什么也没有发生。

有人可以帮我解决这个问题吗?提前谢谢你

为了控制步进电机,我使用了 Adafruit 模块。

import curses
import time
from gpiozero import Robot
from adafruit_servokit import ServoKit

kit = ServoKit(channels=8)

            
def cameraDown():
        kit.servo[0].angle = 0
        time.sleep(0.01)
        
def cameraUp():
        kit.servo[0].angle = 180
        time.sleep(0.01)
        
def cameraFront():
        kit.servo[0].angle = 90
        time.sleep(0.01)
        
def cameraFace():
        kit.servo[0].angle = 70
        time.sleep(0.01)

actions = {
    curses.KEY_UP:  cameraDown(),
    curses.KEY_DOWN:    cameraUp(),
    curses.KEY_LEFT:    cameraFront(),
    curses.KEY_RIGHT:   cameraFace(),
}



def main(window):
    next_key = None
    while True:
        curses.halfdelay(1)
        if next_key is None:
            key = window.getch()
        else:
            key = next_key
            next_key = None
        if key != -1:
            # KEY PRESSED
            curses.halfdelay(3)
            action = actions.get(key)
            if action is not None:
                action()
            next_key = key
            while next_key == key:
                next_key = window.getch()
            # KEY RELEASED
            cameraFace()


curses.wrapper(main)

【问题讨论】:

  • 你尝试过什么方法来调试这个?

标签: python python-3.x raspberry-pi curses


【解决方案1】:

问题出在您的actions dict 中,您在其中为每个键提供了其中一个函数返回的值。您在这里要做的就是赋予它功能本身。去掉括号即可:

actions = {
    curses.KEY_UP:  cameraDown,
    curses.KEY_DOWN:    cameraUp,
    curses.KEY_LEFT:    cameraFront,
    curses.KEY_RIGHT:   cameraFace
}

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多