使用node.js和onoff提高Raspberry Pi上LED闪烁的速度
我试图通过使用变量“counter”来改变间隔 Twitter流正在工作,LED闪烁 我已删除所有twitter凭据 任何帮助都将不胜感激 这是我的密码:使用node.js和onoff提高Raspberry Pi上LED闪烁的速度,node.js,twitter,raspberry-pi,gpio,led,Node.js,Twitter,Raspberry Pi,Gpio,Led,我试图通过使用变量“counter”来改变间隔 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$
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;
}
});
一旦您进行了
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);
只需确保不会出现负值。我在计数器和间隔中添加了一个检查:
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);
}
});
var Gpio=require('onoff').Gpio;
var Twit=需要('Twit');
var T=新Twit({
使用者密钥:“”//您的使用者密钥
,消费者的秘密:“//您的公司$
,访问\u令牌:“”//您的Ac$
,访问\u令牌\u密钥:“”//您的访问权限$
});
var stream=T.stream('status/filter',{track:'#祝福,#和平')
led=新Gpio(17,'输出'),
计数器=200;
stream.start();
var iv;
功能闪烁(间隔){
如果(iv){
间隙(iv);
}
如果(间隔-1){
控制台日志(“祝福”);
计数器+=100;
如果(计数器-1){
控制台日志(“和平”);
计数器-=100;
如果(计数器I)添加在计数器和间隔的检查中: