1

我有这个 RGB 5050 LED 之旅。我目前将它与 Arduino 板和 Johnny-Five 平台一起使用,因为我需要使用 Javascript 来控制它。我想让 LED 以一定的频率闪烁,这会慢慢增加。

对于单色 LED,他们有这个命令:

led.fade(brightness, ms)

但这不适用于 RGB LED(这很愚蠢)。

我发现的唯一选择是:

function FadeIN(){
  led.intensity(i);
  i++; 

  if(i < 100){
    setTimeout( FadeIN, (Timer[y]/20));
  }                        
}

这是一个循环函数,我不得不这样做,因为你实际上不能setTimeout()在 a fororwhile循环中使用。我也使用类似的功能来淡出 LED。

问题是:它的工作时间很短。但有时它实际上会跳过哔哔声。此外,有时它是如此之快,以至于亮度降低(淡出)可以忽略不计,甚至没有达到“0”并再次开始增加。

我确定这不是硬件限制(Arduino),因为我已经使用 Arduino 编辑器和 C++ 实现了我想要的。

在 J5 网站上,他们有很多仅针对单色 LED 的命令和示例,而没有针对 RGB 的命令和示例。

任何人都可以帮忙吗?

4

1 回答 1

0

请注意,RGB LED 的实例化方式与单色 LED 不同。毕竟,他们有更多的别针!这是一个例子:

var led = new five.Led.RGB([9, 10, 11]);

在https://github.com/rwaldron/johnny-five/wiki/led.rgbhttp://johnny-five.io/api/led.rgb/上有使用 RGB LED 的文档。事实上,这里有关于随时间改变 RGB LED 强度的文档:http: //johnny-five.io/examples/led-rgb-intensity/。从该文件中:

var temporal = require("temporal");
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {

  // Initialize the RGB LED
  var led = new five.Led.RGB([6, 5, 3]);

  // Set to full intensity red
  console.log("100% red");
  led.color("#FF0000");

  temporal.queue([{
    // After 3 seconds, dim to 30% intensity
    wait: 3000,
    task: function() {
      console.log("30% red");
      led.intensity(30);
    }
  }, {
    // 3 secs then turn blue, still 30% intensity
    wait: 3000,
    task: function() {
      console.log("30% blue");
      led.color("#0000FF");
    }
  }, {
    // Another 3 seconds, go full intensity blue
    wait: 3000,
    task: function() {
      console.log("100% blue");
      led.intensity(100);
    }
  }, ]);
});
于 2017-02-14T21:34:19.940 回答