Skip to content

Commit 281b99f

Browse files
Respect default pin state when setting OUTPUT mode
Only disable PWM when setting pinMode to OUTPUT if pin mode was previously set to PWM.
1 parent 609341b commit 281b99f

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)