I connected a button to the Raspberry Pi GPIO ports:
The pi-gpio node
unfortunately there is no event generated when using the hardware GPIO. You can create an event by using an emitter and setInterval
to create a timer that checks the status every so often and then emits an event out to your application.
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
You can tune the timer to your requirements. I think 50ms is a good number as it is not possible for the human eye to detect the difference if it is faster.