【问题标题】:PYTHON Program Run(Executed) when keyboard input is press按下键盘输入时 PYTHON 程序运行(已执行)
【发布时间】:2018-08-14 10:50:35
【问题描述】:

您好,我必须使用 Slushengine 电机驱动程序来运行多个电机的简单 python 项目。我已经制作了示例程序(如下面的代码所示),但现在我希望电机在我按下键盘(输入)键时运行,例如 ENTER 键。然后我希望程序在我按下另一个键时停止。

from inputs import get_key
import RPi.GPIO as GPIO
import Slush
import math
import time

from time import sleep

b = Slush.sBoard()
m = [Slush.Motor(0), Slush.Motor(1), Slush.Motor(2), Slush.Motor(3)]

m[0].setMaxSpeed(150)
m[1].setMaxSpeed(150)
m[2].setMaxSpeed(250)
m[3].setMaxSpeed(150)

m[0].setCurrent(150, 150, 150, 150)
m[1].setCurrent(100, 100, 100, 100)
m[2].setCurrent(150, 150, 150, 150)
m[3].setCurrent(100, 100, 100, 100)


GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 100)
pwm.start(0)
GPIO.output(18, True)

pwm.ChangeDutyCycle(1)
sleep(0.5)
m[1].goTo(750)
time.sleep(3)
m[0].goTo(750)
time.sleep(3)
pwm.ChangeDutyCycle(99)
sleep(1)

检测到按键时我需要执行此代码。

pwm.ChangeDutyCycle(1)
sleep(0.5)
m[1].goTo(750)
time.sleep(3)
m[0].goTo(750)
time.sleep(3)
pwm.ChangeDutyCycle(99)
sleep(1)

【问题讨论】:

    标签: python keyboard


    【解决方案1】:

    PyPI不是已经显示了吗?

    from inputs import get_key
    
    def key_input():
        while 1:
            events = get_key()
            for event in events:
                print(event.ev_type, event.code, event.state)
    
    if __name__ == '__main__':
        key_input()
    

    【讨论】:

    • 您应该编辑自己的代码,而不是发布新代码作为答案。反正我觉得不错。您可以随时通过print ("YES") 尝试,看看它是否记录了您的回车键
    【解决方案2】:

    这是正确的吗?抱歉我还不清楚

    from inputs import get_key
    import RPi.GPIO as GPIO
    import Slush
    import math
    import time
    
    from time import sleep
    
    b = Slush.sBoard()
    m = [Slush.Motor(0), Slush.Motor(1), Slush.Motor(2), Slush.Motor(3)]
    
    m[0].setMaxSpeed(150)
    m[1].setMaxSpeed(150)
    m[2].setMaxSpeed(250)
    m[3].setMaxSpeed(150)
    
    m[0].setCurrent(150, 150, 150, 150)
    m[1].setCurrent(100, 100, 100, 100)
    m[2].setCurrent(150, 150, 150, 150)
    m[3].setCurrent(100, 100, 100, 100)
    
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(18, GPIO.OUT)
    pwm = GPIO.PWM(18, 100)
    pwm.start(0)
    GPIO.output(18, 1)
    
    while 1:
        events = get_key()
        for event in events:
    
            if event.code == 'KEY_ENTER':
                pwm.ChangeDutyCycle(1)
                time.sleep(1)
                m[1].goTo(750)
                time.sleep(3)
                m[0].goTo(750)
                time.sleep(3)
                pwm.ChangeDutyCycle(99)
                time.sleep(1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 2014-09-13
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多