残念ながら、ハードウェアGPIOの使用時にイベントは生成されません。エミッターを使用してイベントをsetInterval
作成し、ステータスを頻繁にチェックしてからアプリケーションにイベントを送信するタイマーを作成できます。
var ee = new process.EventEmitter(),
buttonState;
ee.on('stateChange', function(previousValue, value){
console.log('button state changed from', previousValue, 'to', value);
});
setInterval(function(){
gpio.read(16, function(err, value) {
if(err){
ee.emit('error', err);
} else{
if(buttonState !== value){
var previousState = buttonState;
buttonState = value;
ee.emit('stateChange', previousState, value);
}
}
});
}, 50); //check button state every 50ms
タイマーを要件に合わせて調整できます。50msの方が速いと人間の目では違いを検出できないので、50msが良い数値だと思います。