|
21 | 21 |
|
22 | 22 | See file LICENSE.txt for further informations on licensing terms. |
23 | 23 |
|
24 | | - Last updated by Jeff Hoefs: October 24th, 2015 |
| 24 | + Last updated by Jeff Hoefs: October 31st, 2015 |
25 | 25 | */ |
26 | 26 |
|
27 | 27 | #include <SoftPWMServo.h> // Gives us PWM and Servo on every pin |
@@ -254,7 +254,7 @@ void setPinModeCallback(byte pin, int mode) |
254 | 254 | reportAnalogCallback(PIN_TO_ANALOG(pin), mode == ANALOG ? 1 : 0); // turn on/off reporting |
255 | 255 | } |
256 | 256 | if (IS_PIN_DIGITAL(pin)) { |
257 | | - if (mode == INPUT) { |
| 257 | + if (mode == INPUT || mode == MODE_INPUT_PULLUP) { |
258 | 258 | portConfigInputs[pin / 8] |= (1 << (pin & 7)); |
259 | 259 | } else { |
260 | 260 | portConfigInputs[pin / 8] &= ~(1 << (pin & 7)); |
@@ -284,6 +284,13 @@ void setPinModeCallback(byte pin, int mode) |
284 | 284 | pinConfig[pin] = INPUT; |
285 | 285 | } |
286 | 286 | break; |
| 287 | + case MODE_INPUT_PULLUP: |
| 288 | + if (IS_PIN_DIGITAL(pin)) { |
| 289 | + pinMode(PIN_TO_DIGITAL(pin), INPUT_PULLUP); |
| 290 | + pinConfig[pin] = MODE_INPUT_PULLUP; |
| 291 | + pinState[pin] = 1; |
| 292 | + } |
| 293 | + break; |
287 | 294 | case OUTPUT: |
288 | 295 | if (IS_PIN_DIGITAL(pin)) { |
289 | 296 | digitalWrite(PIN_TO_DIGITAL(pin), LOW); // disable PWM |
@@ -583,6 +590,8 @@ void sysexCallback(byte command, byte argc, byte *argv) |
583 | 590 | if (IS_PIN_DIGITAL(pin)) { |
584 | 591 | Firmata.write((byte)INPUT); |
585 | 592 | Firmata.write(1); |
| 593 | + Firmata.write((byte)MODE_INPUT_PULLUP); |
| 594 | + Firmata.write(1); |
586 | 595 | Firmata.write((byte)OUTPUT); |
587 | 596 | Firmata.write(1); |
588 | 597 | } |
|
0 commit comments