繁体   English   中英

如何使用带有 Pyfirmata 的 Arduino 操纵杆按钮

[英]How to use an Arduino joystick button with Pyfirmata

我在 Arduino 中制作了一个使用 PyFirmata 和操纵杆的程序。 除按钮外,一切正常。 我的理解是,我知道我需要先写一个电压,但之后当我读取该值时,无论如何它都保持在 1。 为了确保我的主板或操纵杆或其他东西没有故障,我使用 c++ 默认 Arduino 语言运行它并且它工作。 请注意,我是 Arduino 的新手,所以请记住这一点。 这是我的代码:

from pyfirmata import Arduino
from pyfirmata.util import Iterator
import time

# Setup
try:
    board = Arduino('COM6')
    iterator = Iterator(board)
    iterator.start()
    print("Successfully Connected to Arduino Board")
except:
    print("ERROR: Could Not Connect to Arduino Board")
    board = None
    exit()

joystick_x = board.get_pin("a:0:i")
joystick_y = board.get_pin("a:1:i")
joystick_switch = board.digital[3]

dt = 0.1
val_x, val_y, val_s = .5, .5, 0

joystick_switch.write(1)

while True:
    time.sleep(dt)
    val_x = joystick_x.read()
    val_y = joystick_y.read()
    val_s = joystick_switch.read()
    print(val_s)

我想出了答案。 使用 PyFirmata 编写时,您无法再次正确读取它。 虽然在 c++ 你可以。 所以为了解决这个问题,我编辑了我的电路,以便我写入另一个引脚,然后在它们之间切换操纵杆,最后进行模拟读取。 我必须进行模拟读取,因为一些电流会通过。 为了解决这个问题,我使用了数学库中的地板 function 来获得正确的值。 感谢所有试图提供帮助的人。 这是任何想要查看它的人的代码:

from pyfirmata import Arduino, PWM, INPUT, OUTPUT
from pyfirmata.util import Iterator
import time
from math import floor

# Setup
try:
    board = Arduino('COM6')
    print("here")
    iterator = Iterator(board)
    iterator.start()
    print("Successfully Connected to Arduino Board")
except:
    print("ERROR: Could Not Connect to Arduino Board")
    board = None
    exit()

joystick_x = board.get_pin("a:0:i")
joystick_y = board.get_pin("a:1:i")
joystick_x.enable_reporting()
joystick_y.enable_reporting()
joystick_switch = board.get_pin("a:3:i")
joystick_switch2 = board.digital[2]
joystick_switch.enable_reporting()

dt = 0.1
val_x, val_y, val_s = .5, .5, 0

joystick_switch2.write(1)

while True:
    time.sleep(dt)
    val_x = joystick_x.read()
    val_y = joystick_y.read()
    val_s = floor(joystick_switch.read())
    # if val_x is None or val_y is None or val_s:
    #     val_x, val_y, val_s = .5, .5, 0
    print(val_s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM