Skip to content

Commit ca88faa

Browse files
author
Dave Conway-Jones
committed
Fix arduino nodes servo/pwm output to reduce jitter
to close #584
1 parent 04daa5b commit ca88faa

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

hardware/Arduino/35-arduino.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,11 @@ module.exports = function(RED) {
7676
node.status({fill:"grey",shape:"ring",text:"node-red:common.status.connecting"});
7777
var doit = function() {
7878
node.running = true;
79+
if (node.state === "ANALOG") { node.board.pinMode(node.pin, 0x02); }
80+
if (node.state === "INPUT") { node.board.pinMode(node.pin, 0x00); }
81+
if (node.state === "PULLUP") { node.board.pinMode(node.pin, 0x0B); }
7982
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
8083
if (node.state === "ANALOG") {
81-
node.board.pinMode(node.pin, 0x02);
8284
node.board.analogRead(node.pin, function(v) {
8385
if (v !== node.oldval) {
8486
node.oldval = v;
@@ -87,7 +89,6 @@ module.exports = function(RED) {
8789
});
8890
}
8991
if (node.state === "INPUT") {
90-
node.board.pinMode(node.pin, 0x00);
9192
node.board.digitalRead(node.pin, function(v) {
9293
if (v !== node.oldval) {
9394
node.oldval = v;
@@ -96,7 +97,6 @@ module.exports = function(RED) {
9697
});
9798
}
9899
if (node.state === "PULLUP") {
99-
node.board.pinMode(node.pin, 0x0B);
100100
node.board.digitalRead(node.pin, function(v) {
101101
if (v !== node.oldval) {
102102
node.oldval = v;
@@ -149,27 +149,27 @@ module.exports = function(RED) {
149149
node.status({fill:"grey",shape:"ring",text:"node-red:common.status.connecting"});
150150
var doit = function() {
151151
node.running = true;
152+
if (node.state === "OUTPUT") { node.board.pinMode(node.pin, 0x01); }
153+
if (node.state === "PWM") { node.board.pinMode(node.pin, 0x03); }
154+
if (node.state === "SERVO") { node.board.pinMode(node.pin, 0x04); }
152155
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
153156
node.on("input", function(msg) {
154157
if (node.board.isReady) {
155158
if (node.state === "OUTPUT") {
156-
node.board.pinMode(node.pin, 0x01);
157159
if ((msg.payload === true)||(msg.payload.toString() == "1")||(msg.payload.toString().toLowerCase() == "on")) {
158160
node.board.digitalWrite(node.pin, node.board.HIGH);
159161
}
160162
if ((msg.payload === false)||(msg.payload.toString() == "0")||(msg.payload.toString().toLowerCase() == "off")) {
161163
node.board.digitalWrite(node.pin, node.board.LOW);
162164
}
163165
}
164-
if (node.state === "PWM") {
165-
node.board.pinMode(node.pin, 0x03);
166+
if (node.state === "PWM") {
166167
msg.payload = parseInt((msg.payload * 1) + 0.5);
167168
if ((msg.payload >= 0) && (msg.payload <= 255)) {
168169
node.board.analogWrite(node.pin, msg.payload);
169170
}
170171
}
171172
if (node.state === "SERVO") {
172-
node.board.pinMode(node.pin, 0x04);
173173
msg.payload = parseInt((msg.payload * 1) + 0.5);
174174
if ((msg.payload >= 0) && (msg.payload <= 180)) {
175175
node.board.servoWrite(node.pin, msg.payload);

hardware/Arduino/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name" : "node-red-node-arduino",
3-
"version" : "0.2.3",
3+
"version" : "0.2.4",
44
"description" : "A Node-RED node to talk to an Arduino running firmata",
55
"dependencies" : {
66
"firmata" : "^2.0.0"

0 commit comments

Comments
 (0)