【问题标题】:JavaScript to toggle relay through websiteJavaScript 通过网站切换中继
【发布时间】:2018-04-21 22:07:58
【问题描述】:

抱歉,我是 javascript 新手。我正在尝试使用 setInterval 从网站切换继电器。继电器是一个有 16 个通道的 Sainsmart,它连接到一个由树莓派控制的 arduino。目标是最终让三个独立的继电器以特定的时间间隔切换。但是,使第一个工作的每一次尝试都失败了。此外,每次我在函数或全局中添加 setInterval 时,都会冻结来自我的网络摄像机的实时流视频。我正在通过 ably 使用沙盒密钥。

html 代码和脚本用于打开继电器,然后第二个按钮将其关闭,但我需要一个按钮来完成它。

按钮启动序列,计数器指示继电器是打开还是关闭。它设置为用偶数打开,用奇数关闭。任何帮助将不胜感激。

这是我正在尝试使用的更新代码。

<div class="grid-item"><button id="37" onclick="startOnOff()">Start</button> 
</div>

<script src="http://cdn.ably.io/lib/ably.min-1.js"></script>
<script>

var count = 0;
function startOnOff() {
  var on = "37" + "on";
  var off = "37" + "off";
  if (counter % 2 == 0) {
    toggleRelay(on);
    count += 1;
  } else if (count % 2 == 1) {
    toggleRelay(off);
  }
  setInterval(startOnOff, 2000);
}

【问题讨论】:

  • var counter = 0;cyclePiston 函数内部做了什么......?
  • 统计左大括号的个数和右大括号的个数。看看有什么问题。
  • 我没看到。我一直在尝试很多不同的组合,而我看到其他人建议我把它们搞砸了。我固定了牙套,现在相机再次开始流式传输,但我仍然无法让 setInterval 工作。

标签: javascript html arduino raspberry-pi


【解决方案1】:

count 在几个地方,counter 在一个地方应该是count

假设 toggleRelay() 在您的代码中的其他地方定义,试试这个:

var count = 0;
var on = "37" + "on";
var off = "37" + "off";

function startOnOff() {

    if (count % 2 == 0) {
        toggleRelay(on);
    } else {
        toggleRelay(off);
    }

    count += 1;
    setTimeout(startOnOff, 2000);

}
  • count += 1; 应该在if 条件语句之外,
  • 并在递归调用startOnOff() 时使用setTimeout()

【讨论】:

    猜你喜欢
    • 2023-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多