@iiot2k/gpiox
Version:
Input/Output on any gpio library
51 lines (40 loc) • 1.46 kB
JavaScript
/*
* example generate pwm on gpio output
*
* run:
* > node pwm_gpio.js
*
*/
;
const gpiox = require("../gpiox");
const PIN_OUTPUT = 20;
const FREQUENCY = 2000; // Hz
const FREQUENCY2 = 10000; // Hz
const DUTY_CYCLE1 = 30; // %
const DUTY_CYCLE2 = 50; // %
const DUTY_CYCLE3 = 70; // %
console.log("*** pwm rt gpio node.js example ***");
console.log("stop program with Ctrl+C");
// init gpio
gpiox.init_gpio(PIN_OUTPUT, gpiox.GPIO_MODE_OUTPUT, 0);
// set pwm
gpiox.pwm_rt_gpio(PIN_OUTPUT, FREQUENCY, DUTY_CYCLE1);
console.log("frequency", gpiox.get_pwm_frequency(PIN_OUTPUT), "duty cycle", gpiox.get_pwm_dutycycle(PIN_OUTPUT));
// after 5 sec change duty cycle
var id_tout = setTimeout(function() {
gpiox.pwm_rt_gpio(PIN_OUTPUT, FREQUENCY, DUTY_CYCLE2);
console.log("frequency", gpiox.get_pwm_frequency(PIN_OUTPUT), "duty cycle", gpiox.get_pwm_dutycycle(PIN_OUTPUT));
}, 5000);
// after 5 sec change duty cycle and frequency
var id_tout = setTimeout(function() {
gpiox.pwm_rt_gpio(PIN_OUTPUT, FREQUENCY2, DUTY_CYCLE3);
console.log("frequency", gpiox.get_pwm_frequency(PIN_OUTPUT), "duty cycle", gpiox.get_pwm_dutycycle(PIN_OUTPUT));
}, 10000);
// prevent stop program
var id_intv = setInterval(function() {}, 100);
process.on('SIGINT', () => {
clearTimeout(id_tout);
clearInterval(id_intv);
console.log(" -> program stopped");
process.exit();
});