0

这是我第一次编写 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 节点,它们会打印一条消息,但即使满足条件,它们也不会运行。

提前致谢!

4

0 回答 0