python - arduino上的Python,输入等待进程完成
问题描述
我有 3 个按钮和一个 LED 的简单设置。我想通过按钮调节 LED 的闪烁,每个按钮都指定了闪烁的“持续时间”。我的程序一直等到闪烁部分完成,直到它读取输入。我尝试了多处理,但我无法让它工作。
我还实施了光功率调节,但效果很好。
这是“工作”代码:
import pyfirmata
import time
board = pyfirmata.Arduino('COM3')
it = pyfirmata.util.Iterator(board)
it.start()
analA = board.get_pin('a:0:i')
wejA = board.get_pin('d:2:i')
wejB = board.get_pin('d:4:i')
wejC = board.get_pin('d:7:i')
led = board.get_pin('d:10:p')
x = False
y = False
z = False
f = 1
while True:
x = wejA.read()
y = wejB.read()
z = wejC.read()
analog = analA.read()
if x == True:
f = 3
print(analog, x, y, z, f)
if y == True:
f = 1
print(analog, x, y, z, f)
if z == 1:
f = 0.3
print(analog, x, y, z, f)
led.write(analog)
time.sleep(f)
led.write(0)
time.sleep(f)
我盲目地尝试了多处理但我失败了,这是我的尝试:
import pyfirmata
import time
import multiprocessing
from multiprocessing import Process
board = pyfirmata.Arduino('COM3')
it = pyfirmata.util.Iterator(board)
it.start()
analA = board.get_pin('a:0:i')
wejA = board.get_pin('d:2:i')
wejB = board.get_pin('d:4:i')
wejC = board.get_pin('d:7:i')
led = board.get_pin('d:10:p')
x = False
y = False
z = False
f = 1
def wejscia():
x = wejA.read()
y = wejB.read()
z = wejC.read()
analog = analA.read()
if x == True:
f = 3
print(analog, x, y, z, f)
if y == True:
f = 1
print(analog, x, y, z, f)
if z == 1:
f = 0.3
print(analog, x, y, z, f)
def wyjscia():
analog = analA.read()
led.write(analog)
time.sleep(f)
led.write(0)
time.sleep(f)
while True:
p1 = Process(target=wejscia)
p1.start()
p2 = Process(target=wyjscia)
p2.start()
p1.join()
p2.join()
如何让程序同时检查输入和输出?
我刚刚开始编程,所以任何建议都值得赞赏。
解决方案
前段时间我有同样的问题。添加这个帮助我修复它。
pin.enable_reporting()
这实质上是监听输入引脚并报告其值。所以我认为在初始化引脚时添加它可以解决问题。
wejA.enable_reporting()
wejB.enable_reporting()
wejC.enable_reporting()
推荐阅读
- python - TypeError:按钮对象不可调用。无法从具有另一个函数的 __init__ 函数访问 Button 的属性
- azure - 当我的订阅/位置没有可用大小时,如何在 Azure 上创建虚拟机
- kubernetes - 由于死锁,Pod 没有准备好
- laminas - 在层中添加 i18n 功能
- assembly - 从用户输入中添加两个数字 0 - 255,并在 Assembly x86 8086 中打印
- javascript - React-Native 应用程序上只有边框底部阴影效果
- java - 继续使用 maven 获取 java.lang.NoClassDefFoundError
- android - Flutter 更新 Appbar 中的文字
- pseudocode - “|=”在伪代码中是什么意思?
- python - python azure function app为路径定义变量