首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Pyfirmata的Arduino操纵杆按钮

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

Stack Overflow用户
提问于 2022-08-14 22:28:47
回答 1查看 104关注 0票数 0

我用Arduino的操纵杆制作了一个使用PyFirmata的程序。除了按钮,一切都正常工作。我明白这一点,我知道我需要先写一个电压,但在那之后,当我读到值时,它就会保持在1,无论发生什么。为了确保我的板、操纵杆或其他东西没有问题,我使用默认的Arduino语言c++运行它,它工作了。请注意我是新来的阿迪诺,所以请记住这一点。这是我的代码:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 15:24:26

我想出了答案。用PyFirmata,当你写的时候,你不能正确地再读一遍。虽然在c++你可以。因此,为了绕过这个问题,我编辑了我的电路,让我写到另一个引脚,然后在它们之间切换操纵杆,最后进行模拟读取。我必须做模拟读取,因为一些电流将通过它。为了解决这个问题,我使用了数学库中的底座函数来获得正确的值。感谢所有想帮忙的人。以下是任何想要查看它的人的代码:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73355502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档