这是我第一次编写 Raspberry PI,也是我第一次使用 Python、JavaScript 或 Node-Red。
我正在尝试通过在 Node-RED 中操作伺服电机来提升门。基本上,我正在做的是用我的 pi 相机拍摄车牌照片,对其进行处理,将其发送到 OpenALPR,然后将车牌作为 msg.payload 取回。
现在,如果 msg.paylaod.results[0].plate 与我需要的车牌号匹配,我想做的是激活伺服电机。我正在尝试创建一个全局变量以在激活伺服电机的子流程中使用。这是代码:
if(msg.payload.results[0].plate=="SB06KBE" ||
msg.payload.results[0].plate=="AR18AUG")
{
console.log(msg.payload.results[0].plate);
context.global.cond=1;
}
else console.log("not recognized");
该节点进入电机子流:
变量节点:
var mycond=context.global.cond;
return mycond;
电机 pwm 节点:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)
p=GPIO.PWM(7,50)
p.start(7)
if mycond==1:
try:
while True:
p.ChangeDutyCycle(7)
time.sleep(1)
p.ChangeDutyCycle(3)
time.sleep(10)
except KeyboardInterrupt:
p.stop()
GPIO.cleanup()
由于某种原因,电机无法启动。
我尝试使用开关节点并删除子流中的变量节点和电机节点中的 if 条件,但开关不会转到任何输出。这是我尝试使用的开关节点:
此外,如果我删除子流中的变量节点,即使无法识别车牌,电机也会运行。
LE:我还尝试将 switch 节点的前两个输出连接到两个 JavaScript 节点,它们会打印一条消息,但即使满足条件,它们也不会运行。
提前致谢!