gpt4 book ai didi

python - 在两个 Arduino Mega 上用 pyfirmata 读取模拟值的问题

转载 作者:行者123 更新时间:2023-12-04 17:21:36 28 4
gpt4 key购买 nike

对于我的项目,我需要读取两个 Arduino Mega 上的多个模拟引脚。 PWM 等其他任务运行良好,但在读取模拟引脚时,我只能从其中一 block 板上读取值。其他显示无:
A0板1:0.5601

A0 板 2:无

如果我只使用一 block 板,两 block 板都读取正确的值,但一起显示始终没有。

下面是一个简单的代码来测试它:

from pyfirmata.util import Iterator
import time
import threading
from pyfirmata import ArduinoMega


def read_1():
board1 = ArduinoMega("COM9")
iterator = Iterator(board1)
iterator.start()
analog_0_board1 = board1.get_pin("a:0:i")
while True:
time.sleep(0.5)
a = analog_0_board1.read()
print("A0 Board 1: " + str(a))


def read_2():
board2 = ArduinoMega("COM4")
iterator = Iterator(board2)
iterator.start()
analog_0_board2 = board2.get_pin("a:0:i")
while True:
time.sleep(0.5)
b = analog_0_board2.read()
print("A0 Board 2: " + str(b))


x = threading.Thread(target=read_1)
x.start()

y = threading.Thread(target=read_2)
y.start()

我读过多处理可以解决这个问题,但我不知道如何在 pyfirmata 中正确使用它,而真正的循环和 tkinter。

致以最诚挚的问候和感谢

最佳答案

我设法解决了问题,也许我当前的代码可以帮助其他人。我编写了以下代码而不是线程部分:

if __name__ == "__main__":
x = multiprocessing.Process(target=read_1)
x.start()

y = multiprocessing.Process(target=read_2)
y.start()
root.mainloop()

root.mainloop() 只是为了测试 tkinter 是否也是可能的。

关于python - 在两个 Arduino Mega 上用 pyfirmata 读取模拟值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65824060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com