【问题标题】:increase speed of LED blink on Raspberry Pi using node.js and onoff使用 node.js 和 onoff 提高 Raspberry Pi 上 LED 闪烁的速度
【发布时间】:2015-09-21 21:01:30
【问题描述】:

我正在尝试通过使用变量“计数器”来更改间隔。

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;

            }

});

【问题讨论】:

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


    【解决方案1】:

    一旦您拨打了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);
    

    只要确保你不要消极。

    【讨论】:

    • 我在检查中添加了计数器和间隔:
    【解决方案2】:

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

    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 = 200;
    
    stream.start();
    
    var iv;
    
    function blink(interval) {
      if (iv) {
        clearInterval(iv);
      }
    if (interval <= 100) {
    
    interval = 100;
    
    }
    console.log("interval = " + interval);
    
    iv = setInterval(function(){
            led.writeSync(led.readSync() === 0 ? 1 : 0);
    }, interval);
    
    }
    
    stream.on('tweet', function(tweet) {
    
            if(tweet.text.indexOf('#blessed') > -1) {
                    console.log("blessed");
    
    
                    counter += 100;
                        if (counter <= 100) {
                    counter = 100;
    }
                    console.log(counter);
                    blink(counter);
    
                }  else if (tweet.text.indexOf('#peace') > -1) {
    
                    console.log("peace");
                    counter -= 100;
                    if (counter <= 100) {
                    counter = 100;
                    }
                    console.log(counter);
                    blink(counter);
    
                }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多