【问题标题】:Raspberry Pi Python GPIO button to mouse left clickRaspberry Pi Python GPIO 按钮鼠标左键单击
【发布时间】:2017-08-17 18:09:36
【问题描述】:

我已经在我的raspberry Pi 上将一个按钮连接到GPIO,并且我已经对其进行了测试;有用。我使用了以下代码:

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(16,GPIO.IN)

终于:

GPIO.cleanup()

我想要的只是让那个按钮模仿鼠标左键单击。这样当它被按下时,pi 会认为我在鼠标上单击了左键。

任何帮助将不胜感激。

【问题讨论】:

    标签: python button raspberry-pi gpio


    【解决方案1】:

    对于鼠标控制,这些帖子可以帮助你:

    有关 GPIO 操作,请参阅e-linux 上的此示例

    您首先需要监控按钮连接到的 GPIO 引脚上的状态变化。 (即把它放在一个循环中)

    然后当它发生变化时,调用一个作用是发送鼠标点击的函数。
    为此,请尝试使用PyUserInput。 (在入门部分,有一个在屏幕中心单击鼠标的示例)。

    【讨论】:

    • 我都看过了,但没有人告诉我如何让我的按钮注册为鼠标点击
    • 好吧,你必须(在循环中)读取你的 gpio 状态 *带有按钮的那个)并通过我提到的帖子发送点击。
    • 对不起,伙计。我是一个新手,有点需要有人告诉我怎么做,而不是指点我其他没有回答问题的文章。
    • 我刚刚告诉过你.. 循环读取 youtrbutton 上的 GPIO 状态。当它(GPIO状态)发生变化时,使用上面链接的stackoverflow问题中指出的一种方式来模拟点击。抱歉,这很简单,不是吗?
    • 对你来说可能,但对我来说没有。
    【解决方案2】:

    所以我只需要引脚 16 上的 GPIO 按钮左键单击屏幕某个区域上的鼠标按钮,这样我就可以在没有连接到 HDMI 或无线键盘的 Pi 的情况下激活应用程序。

    我安装了 pyuserinput 然后使用了以下代码:

    importRPI.GPIO as GPIO
    import time
    
    from pymouse import PyMouse
    m = PyMouse()
    
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(16,GPIO.IN)
    
    try:
       while True:
           if GPIO.input(16)!=0:m.click(300,275,1)
           time.sleep(0.2)
    
    finally:
        GPIO.cleanup()
    

    通过反复试验,我找到了正确的坐标 (300,275) 和 1 表示鼠标左键单击。我尝试使用睡眠设置来停止重复注册输入的按钮。 sleep 0.2 效果最好。

    【讨论】:

    • 为避免重复问题,您可以寻找debounce。您还可以记录以前的状态,从而允许您仅在 GPIO 状态更改时进行鼠标单击。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2022-07-08
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多