我用Arduino的操纵杆制作了一个使用PyFirmata的程序。除了按钮,一切都正常工作。我明白这一点,我知道我需要先写一个电压,但在那之后,当我读到值时,它就会保持在1,无论发生什么。为了确保我的板、操纵杆或其他东西没有问题,我使用默认的Arduino语言c++运行它,它工作了。请注意我是新来的阿迪诺,所以请记住这一点。这是我的代码:
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)发布于 2022-08-15 15:24:26
我想出了答案。用PyFirmata,当你写的时候,你不能正确地再读一遍。虽然在c++你可以。因此,为了绕过这个问题,我编辑了我的电路,让我写到另一个引脚,然后在它们之间切换操纵杆,最后进行模拟读取。我必须做模拟读取,因为一些电流将通过它。为了解决这个问题,我使用了数学库中的底座函数来获得正确的值。感谢所有想帮忙的人。以下是任何想要查看它的人的代码:
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)https://stackoverflow.com/questions/73355502
复制相似问题