qtouch
Version:
interaction with qtouch component : AT42QT1070 Touch Sensor IC
78 lines (69 loc) • 2.05 kB
JavaScript
/*
* Librairie du composant Qtouch : AT42QT1070
* install i2get : sudo apt-get install i2get
*/
var exec = require('child_process').exec;
var CMD = "i2cget -y 1 0x1b 0x03 b"; //commande pour lire le bus I2C avec le soft i2cget à l'adresse 0x1b au registre 0x03
//lit la valeur du bus I2C à intervalle regulier (50ms)
function read(callback) {
setInterval(function() {
exec(CMD, function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}
callback(stdout.trim())
});
}, 50 );
}
// fct declanché lors d'un changement de valeur sur le bus I2C
function onChange(callback){
var oldVal = "";
read(function(newVal){
if(newVal.trim() != oldVal.trim()){
callback(newVal.trim(),oldVal.trim());
}
oldVal=newVal.trim();
});
}
function onPressLong(timer, callback){
setInterval(function() {
exec(CMD, function (error, stdout1, stderr) {
if(stdout1.trim() != "0x00"){
setTimeout(function(){
exec(CMD, function (error, stdout2, stderr){
if( stdout1.trim() == stdout2.trim() ){
callback(stdout1.trim());
}
});
}, timer);
}
});
},timer+50);
}
// fct declanché lors du relachement de l'appui du bouton numBtn
function onPressDown(numBtn, callback){
onChange(function(newVal, oldVal){
if (BoutonAllumer(oldVal,numBtn)){
callback();
}
});
}
// fct declanché lors de l'appui du bouton numBtn
function onPressUp(numBtn, callback){
onChange(function(newVal, oldVal){
if (BoutonAllumer(newVal,numBtn)){
callback();
}
});
}
// MASQUE BINAIRE pour tester par rapport au data I2C lue si le bouton entrer en paramatre est enclenché ou non
function binaryMask (mot,numBtn){
return ((mot>>numBtn) & '0x01')
}
//les exports
exports.onChange = onChange;
exports.read = read;
exports.binaryMask = binaryMask ;
exports.onPressLong = onPressLong;
exports.onPressDown = onPressDown;
exports.onPressUp = onPressUp;