Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature to set frequency for pwm output in gpiod node #425

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
3 changes: 2 additions & 1 deletion hardware/pigpiod/locales/en-US/pi-gpiod.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"resistor": "Resistor?",
"readinitial": "Read initial state of pin on deploy/restart?",
"type": "Type",
"freq": "Frequency",
"initpin": "Initialise pin state?",
"debounce": "Debounce",
"limits": "Limits",
Expand All @@ -32,7 +33,7 @@
"pin": "<b>Pins in Use</b>: ",
"in": "Only Digital Input is supported - input must be 0 or 1.",
"dig": "Digital output - input must be 0 or 1.",
"pwm": "PWM output - input must be between 0 to 100.",
"pwm": "PWM output - input must be between 0 to 100.<br/>Frequency must be in between 5 and 40000 Hz.",
"ser": "Servo output - input must be between 0 to 100. 50 is centre.<br/>Min must be 500uS or more, Max must be 2500uS or less."
},
"types": {
Expand Down
12 changes: 10 additions & 2 deletions hardware/pigpiod/pi-gpiod.html
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,10 @@
<option value="ser" data-i18n="pi-gpiod.servo"></option>
</select>
</div>
<div class="form-row" id="node-set-frequency">
<label>&nbsp;&nbsp;&nbsp;&nbsp;<span data-i18n="pi-gpiod.label.freq"></label>
<input type="text" id="node-input-freq" style="width:70px;"> Hz
</div>
<div class="form-row" id="node-set-minimax">
<label>&nbsp;&nbsp;&nbsp;&nbsp;<span data-i18n="pi-gpiod.label.limits"></label>
<span data-i18n="pi-gpiod.label.min"></span> <input type="text" id="node-input-sermin" style="width:70px;"> uS
Expand Down Expand Up @@ -448,6 +452,7 @@
set: { value:"" },
level: { value:"0" },
out: { value:"out" },
freq: { value:"800" },
sermin: { value:"1000" },
sermax: { value:"2000" }
},
Expand Down Expand Up @@ -479,23 +484,26 @@
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-frequency").show();
$('#node-set-minimax').hide();
$("#dig-tip").hide();
$("#pwm-tip").show();
$("#ser-tip").hide();
}
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-frequency").hide();
$('#node-set-minimax').show();
$("#dig-tip").hide();
$("#pwm-tip").hide();
$("#ser-tip").show();
}
else {
$('#node-set-tick').show();
$("#node-set-frequency").hide();
$('#node-set-minimax').hide();
$("#dig-tip").show();
$("#pwm-tip").hide();
Expand Down
11 changes: 7 additions & 4 deletions hardware/pigpiod/pi-gpiod.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@ module.exports = function(RED) {
this.set = n.set || false;
this.level = parseInt(n.level || 0);
this.out = n.out || "out";
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) {
Expand Down Expand Up @@ -146,10 +149,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.out === "pwm") {
PiGPIO.set_PWM_frequency(node.pin,node.freq);
//PiGPIO.set_PWM_range(node.pin,1000);
}
}
});
}
Expand Down