From c186a22347b36c9f85f3530e5800faed806763a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=A4fele?= Date: Fri, 30 Mar 2018 11:43:59 +0200 Subject: [PATCH] Add option to set frequency --- hardware/pigpiod/locales/en-US/pi-gpiod.json | 2 ++ hardware/pigpiod/pi-gpiod.html | 32 ++++++++++++++++++-- hardware/pigpiod/pi-gpiod.js | 12 +++++--- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/hardware/pigpiod/locales/en-US/pi-gpiod.json b/hardware/pigpiod/locales/en-US/pi-gpiod.json index 5eaa33e6..8e6bd7b9 100644 --- a/hardware/pigpiod/locales/en-US/pi-gpiod.json +++ b/hardware/pigpiod/locales/en-US/pi-gpiod.json @@ -7,6 +7,8 @@ "resistor": "Resistor?", "readinitial": "Read initial state of pin on deploy/restart?", "type": "Type", + "setfreq": "Set frequency?", + "freq": "Frequency", "initpin": "Initialise pin state?", "debounce": "Debounce", "limits": "Limits", diff --git a/hardware/pigpiod/pi-gpiod.html b/hardware/pigpiod/pi-gpiod.html index 824399c6..e900d24d 100644 --- a/hardware/pigpiod/pi-gpiod.html +++ b/hardware/pigpiod/pi-gpiod.html @@ -381,6 +381,15 @@ +
+ + + +
+
+ + Hz +
uS @@ -448,6 +457,8 @@ set: { value:"" }, level: { value:"0" }, out: { value:"out" }, + setfreq: { value:""}, + freq: { value:"800" }, sermin: { value:"1000" }, sermax: { value:"2000" } }, @@ -479,8 +490,9 @@ if ($("#node-input-out").val() === "pwm") { $('#node-set-tick').hide(); $('#node-set-state').hide(); - $('#node-set-minimax').hide(); $('#node-input-set').prop('checked', false); + $('#node-set-freq-tick').show(); + $('#node-set-minimax').hide(); $("#dig-tip").hide(); $("#pwm-tip").show(); $("#ser-tip").hide(); @@ -488,14 +500,20 @@ else if ($("#node-input-out").val() === "ser") { $('#node-set-tick').hide(); $('#node-set-state').hide(); - $('#node-set-minimax').show(); $('#node-input-set').prop('checked', false); + $('#node-set-freq-tick').hide(); + $("#node-set-frequency").hide(); + $('#node-input-setfreq').prop('checked', false); + $('#node-set-minimax').show(); $("#dig-tip").hide(); $("#pwm-tip").hide(); $("#ser-tip").show(); } else { $('#node-set-tick').show(); + $('#node-set-freq-tick').hide(); + $("#node-set-frequency").hide(); + $('#node-input-setfreq').prop('checked', false); $('#node-set-minimax').hide(); $("#dig-tip").show(); $("#pwm-tip").hide(); @@ -515,6 +533,16 @@ $("#node-input-set").change(function () { setstate(); }); setstate(); + var setfreqstate = function () { + if ($('#node-input-setfreq').is(":checked")) { + $("#node-set-frequency").show(); + } else { + $("#node-set-frequency").hide(); + } + }; + $("#node-input-setfreq").change(function () { setfreqstate(); }); + setfreqstate(); + $('#pinform input').on('change', function() { this.pin = $("#pinform input[type='radio']:checked").val(); $("#node-input-pin").val(this.pin); diff --git a/hardware/pigpiod/pi-gpiod.js b/hardware/pigpiod/pi-gpiod.js index 143629da..3414f83f 100644 --- a/hardware/pigpiod/pi-gpiod.js +++ b/hardware/pigpiod/pi-gpiod.js @@ -86,6 +86,10 @@ module.exports = function(RED) { this.set = n.set || false; this.level = parseInt(n.level || 0); this.out = n.out || "out"; + this.setfreq = n.setfreq || false; + this.freq = Number(n.freq || 800); + if (this.freq < 5) { this.freq = 5; } + if (this.freq > 40000) { this.freq = 40000; } this.sermin = Number(n.sermin)/100; this.sermax = Number(n.sermax)/100; if (this.sermin > this.sermax) { @@ -146,10 +150,10 @@ module.exports = function(RED) { } else { node.status({fill:"green",shape:"dot",text:"node-red:common.status.ok"}); } - // if (node.out === "pwm") { - // PiGPIO.set_PWM_frequency(1000); - // PiGPIO.set_PWM_range(1000); - // } + if (node.setfreq) { + PiGPIO.set_PWM_frequency(node.pin,node.freq); + } + //PiGPIO.set_PWM_range(node.pin,1000); } }); }