这是我第一次编写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;
motor pwm node:
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:我还尝试将交换节点的前两个输出连接到两个可以打印消息的JavaScript节点,但即使满足条件它们也不会运行。
提前致谢!