Skip to content

Commit 5d9b298

Browse files
Merge pull request #311 from firmata/issue-302
Only disable PWM if previously enabled
2 parents c744d22 + 281b99f commit 5d9b298

File tree

6 files changed

+24
-6
lines changed

6 files changed

+24
-6
lines changed

examples/StandardFirmata/StandardFirmata.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,10 @@ void setPinModeCallback(byte pin, int mode)
318318
break;
319319
case OUTPUT:
320320
if (IS_PIN_DIGITAL(pin)) {
321-
digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM
321+
if (Firmata.getPinMode(pin) == PIN_MODE_PWM) {
322+
// Disable PWM if pin mode was previously set to PWM.
323+
digitalWrite(PIN_TO_DIGITAL(pin), LOW);
324+
}
322325
pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
323326
Firmata.setPinMode(pin, OUTPUT);
324327
}

examples/StandardFirmataBLE/StandardFirmataBLE.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,10 @@ void setPinModeCallback(byte pin, int mode)
335335
break;
336336
case OUTPUT:
337337
if (IS_PIN_DIGITAL(pin)) {
338-
digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM
338+
if (Firmata.getPinMode(pin) == PIN_MODE_PWM) {
339+
// Disable PWM if pin mode was previously set to PWM.
340+
digitalWrite(PIN_TO_DIGITAL(pin), LOW);
341+
}
339342
pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
340343
Firmata.setPinMode(pin, OUTPUT);
341344
}

examples/StandardFirmataChipKIT/StandardFirmataChipKIT.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,10 @@ void setPinModeCallback(byte pin, int mode)
325325
break;
326326
case OUTPUT:
327327
if (IS_PIN_DIGITAL(pin)) {
328-
digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM
328+
if (Firmata.getPinMode(pin) == PIN_MODE_PWM) {
329+
// Disable PWM if pin mode was previously set to PWM.
330+
digitalWrite(PIN_TO_DIGITAL(pin), LOW);
331+
}
329332
pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
330333
Firmata.setPinMode(pin, OUTPUT);
331334
}

examples/StandardFirmataEthernet/StandardFirmataEthernet.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,10 @@ void setPinModeCallback(byte pin, int mode)
389389
break;
390390
case OUTPUT:
391391
if (IS_PIN_DIGITAL(pin)) {
392-
digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM
392+
if (Firmata.getPinMode(pin) == PIN_MODE_PWM) {
393+
// Disable PWM if pin mode was previously set to PWM.
394+
digitalWrite(PIN_TO_DIGITAL(pin), LOW);
395+
}
393396
pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
394397
Firmata.setPinMode(pin, OUTPUT);
395398
}

examples/StandardFirmataPlus/StandardFirmataPlus.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,10 @@ void setPinModeCallback(byte pin, int mode)
343343
break;
344344
case OUTPUT:
345345
if (IS_PIN_DIGITAL(pin)) {
346-
digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM
346+
if (Firmata.getPinMode(pin) == PIN_MODE_PWM) {
347+
// Disable PWM if pin mode was previously set to PWM.
348+
digitalWrite(PIN_TO_DIGITAL(pin), LOW);
349+
}
347350
pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
348351
Firmata.setPinMode(pin, OUTPUT);
349352
}

examples/StandardFirmataWiFi/StandardFirmataWiFi.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,10 @@ void setPinModeCallback(byte pin, int mode)
407407
break;
408408
case OUTPUT:
409409
if (IS_PIN_DIGITAL(pin)) {
410-
digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM
410+
if (Firmata.getPinMode(pin) == PIN_MODE_PWM) {
411+
// Disable PWM if pin mode was previously set to PWM.
412+
digitalWrite(PIN_TO_DIGITAL(pin), LOW);
413+
}
411414
pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
412415
Firmata.setPinMode(pin, OUTPUT);
413416
}

0 commit comments

Comments
 (0)