使用node.js和onoff增加Raspberry Pi上LED闪烁的速度

时间:2015-09-21 21:01:30

标签: node.js twitter raspberry-pi gpio led

我试图通过使用变量'计数器来改变间隔。

Twitter流正在运行,LED正在闪烁。

我已删除所有Twitter凭据。

非常感谢任何帮助!

这是我的代码:

var Gpio = require('onoff').Gpio;
var Twit = require('twit');
var T = new Twit({
    consumer_key:         '' // Your Consumer Key
  , consumer_secret:      '' // Your Co$
  , access_token:         '' // Your Ac$
  , access_token_secret:  '' // Your Access $
});

var stream = T.stream('statuses/filter', { track: '#blessed, #peace'})

led = new Gpio(17, 'out'),
counter = 500;

stream.start();

var iv = setInterval(function(){
        led.writeSync(led.readSync() === 0 ? 1 : 0);
}, counter);


stream.on('tweet', function(tweet) {

        if(tweet.text.indexOf('#blessed') > -1) {
                console.log("blessed");

                counter += 100;

            }  else if (tweet.text.indexOf('#peace') > -1) {

                console.log("peace");
                counter -= 100;

            }

});

2 个答案:

答案 0 :(得分:0)

一旦您拨打setInterval()电话,计时器已锁定,您就无法更改。这就是函数的参数是如何工作的:在事实之后改变它们什么都不做。没有绑定到提供的值,数字作为副本传入。

您需要清除并重新设置计时器。 setInterval()会返回一个句柄,您可以将其传递给clearInterval()以将其关闭。你已经抓住了它,所以你只需要使用它:

var iv;

function blink(interval) {
  if (iv) {
    clearInterval(iv);
  }

  iv = setInterval(function() {
    led.writeSync(led.readSync() === 0 ? 1 : 0);
  }, interval);
}

然后使用此功能重置它:

counter -= 100;
blink(counter);

确保你不要消极。

答案 1 :(得分:0)

我添加了一个检查计数器和间隔:

<div class="container">
    <h2>Hello world!</h2>
    <div class="desktop">
        this is an extended block only visible on desktop
    </div>
    <p>
        this text is visible from both
    </p>
</div>