UNPKG

@iiot2k/gpiox

Version:

Input/Output on any gpio library

51 lines (40 loc) 1.46 kB
/* * example generate pwm on gpio output * * run: * > node pwm_gpio.js * */ "use strict"; 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(); });