Skip to content

Commit 3af1840

Browse files
committed
Update to Firmata library to 2.5.6
https://github.com/firmata/arduino Signed-off-by: Frederic Pillon <[email protected]>
1 parent 768604c commit 3af1840

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+3278
-1481
lines changed

libraries/Firmata/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.DS_Store

libraries/Firmata/Boards.h

Lines changed: 102 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
Boards.h - Hardware Abstraction Layer for Firmata library
33
Copyright (c) 2006-2008 Hans-Christoph Steiner. All rights reserved.
4-
Copyright (C) 2009-2015 Jeff Hoefs. All rights reserved.
4+
Copyright (C) 2009-2017 Jeff Hoefs. All rights reserved.
55
66
This library is free software; you can redistribute it and/or
77
modify it under the terms of the GNU Lesser General Public
@@ -10,7 +10,7 @@
1010
1111
See file LICENSE.txt for further informations on licensing terms.
1212
13-
Last updated December 19th, 2015
13+
Last updated March 16th, 2017
1414
*/
1515

1616
#ifndef Firmata_Boards_h
@@ -260,6 +260,23 @@ writePort(port, value, bitmask): Write an 8 bit port.
260260
#define PIN_TO_SERVO(p) (p) // deprecated since v2.4
261261

262262

263+
// Arduino MKRZero
264+
#elif defined(ARDUINO_SAMD_MKRZERO)
265+
#define TOTAL_ANALOG_PINS 7
266+
#define TOTAL_PINS 34 // 8 digital + 3 spi + 2 i2c + 2 uart + 7 analog + 3 usb + 1 aref + 5 sd + 1 bottom pad + 1 led + 1 battery adc
267+
#define IS_PIN_DIGITAL(p) ((((p) >= 0 && (p) <= 21) || (p) == 32) && !IS_PIN_SERIAL(p))
268+
#define IS_PIN_ANALOG(p) (((p) >= 15 && (p) < 15 + TOTAL_ANALOG_PINS) || (p) == 33)
269+
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
270+
#define IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) < MAX_SERVOS) // deprecated since v2.4
271+
#define IS_PIN_I2C(p) ((p) == 11 || (p) == 12) // SDA = 11, SCL = 12
272+
#define IS_PIN_SPI(p) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
273+
#define IS_PIN_SERIAL(p) ((p) == PIN_SERIAL1_RX || (p) == PIN_SERIAL1_TX) //defined in variant.h RX = 13, TX = 14
274+
#define PIN_TO_DIGITAL(p) (p)
275+
#define PIN_TO_ANALOG(p) ((p) - 15)
276+
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
277+
#define PIN_TO_SERVO(p) (p) // deprecated since v2.4
278+
279+
263280
// Arduino Zero
264281
// Note this will work with an Arduino Zero Pro, but not with an Arduino M0 Pro
265282
// Arduino M0 Pro does not properly map pins to the board labeled pin numbers
@@ -282,8 +299,23 @@ writePort(port, value, bitmask): Write an 8 bit port.
282299
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
283300
#define PIN_TO_SERVO(p) (p) // deprecated since v2.4
284301

302+
// Arduino Primo
303+
#elif defined(ARDUINO_PRIMO)
304+
#define TOTAL_ANALOG_PINS 6
305+
#define TOTAL_PINS 22 //14 digital + 6 analog + 2 i2c
306+
#define VERSION_BLINK_PIN LED_BUILTIN
307+
#define IS_PIN_DIGITAL(p) ((p) >= 2 && (p) < 20)
308+
#define IS_PIN_ANALOG(p) ((p) >= 14 && (p) < 20)
309+
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
310+
#define IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) < MAX_SERVOS+2)
311+
#define IS_PIN_I2C(p) ((p) == PIN_WIRE_SDA || (p) == PIN_WIRE_SCL) // SDA = 20, SCL = 21
312+
#define IS_PIN_SPI(p) ((p) == SS || (p)== MOSI || (p) == MISO || (p == SCK)) // 10, 11, 12, 13
313+
#define PIN_TO_DIGITAL(p) (p)
314+
#define PIN_TO_ANALOG(p) ((p) - 14)
315+
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
316+
#define PIN_TO_SERVO(p) (p)
285317

286-
// Teensy 1.0
318+
// Arduino 101
287319
#elif defined(_VARIANT_ARDUINO_101_X_)
288320
#define TOTAL_ANALOG_PINS NUM_ANALOG_INPUTS
289321
#define TOTAL_PINS NUM_DIGITAL_PINS // 15 digital (including ATN pin) + 6 analog
@@ -343,6 +375,36 @@ writePort(port, value, bitmask): Write an 8 bit port.
343375
#define PIN_TO_SERVO(p) (p)
344376

345377

378+
// Teensy 3.5 and 3.6
379+
// reference: https://github.com/PaulStoffregen/cores/blob/master/teensy3/pins_arduino.h
380+
#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
381+
#define TOTAL_ANALOG_PINS 27 // 3.5 has 27 and 3.6 has 25
382+
#define TOTAL_PINS 70 // 43 digital + 21 analog-digital + 6 analog (64-69)
383+
#define VERSION_BLINK_PIN 13
384+
#define PIN_SERIAL1_RX 0
385+
#define PIN_SERIAL1_TX 1
386+
#define PIN_SERIAL2_RX 9
387+
#define PIN_SERIAL2_TX 10
388+
#define PIN_SERIAL3_RX 7
389+
#define PIN_SERIAL3_TX 8
390+
// The following 2 UARTs are not yet available via SerialFirmata
391+
#define PIN_SERIAL4_RX 31
392+
#define PIN_SERIAL5_TX 32
393+
#define PIN_SERIAL6_RX 34
394+
#define PIN_SERIAL6_TX 33
395+
#define IS_PIN_DIGITAL(p) ((p) >= 0 && (p) <= 63)
396+
#define IS_PIN_ANALOG(p) (((p) >= 14 && (p) <= 23) || ((p) >= 31 && (p) <= 39) || ((p) >= 49 && (p) <= 50) || ((p) >= 64 && (p) <= 69))
397+
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
398+
#define IS_PIN_SERVO(p) ((p) >= 0 && (p) < MAX_SERVOS)
399+
#define IS_PIN_I2C(p) ((p) == 18 || (p) == 19)
400+
#define IS_PIN_SERIAL(p) (((p) > 6 && (p) < 11) || ((p) == 0 || (p) == 1))
401+
#define PIN_TO_DIGITAL(p) (p)
402+
// A0-A9 = D14-D23; A12-A20 = D31-D39; A23-A24 = D49-D50; A10-A11 = D64-D65; A21-A22 = D66-D67; A25-A26 = D68-D69
403+
#define PIN_TO_ANALOG(p) (((p) <= 23) ? (p) - 14 : (((p) <= 39) ? (p) - 19 : (((p) <= 50) ? (p) - 26 : (((p) <= 65) ? (p) - 55 : (((p) <= 67) ? (p) - 45 : (p) - 43)))))
404+
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
405+
#define PIN_TO_SERVO(p) (p)
406+
407+
346408
// Teensy 3.0, 3.1 and 3.2
347409
#elif defined(__MK20DX128__) || defined(__MK20DX256__)
348410
#define TOTAL_ANALOG_PINS 14
@@ -449,6 +511,22 @@ writePort(port, value, bitmask): Write an 8 bit port.
449511
#define PIN_TO_SERVO(p) ((p) - 2)
450512

451513

514+
// RedBearLab BLE Nano with factory switch settings (S1 - S10)
515+
#elif defined(BLE_NANO)
516+
#define TOTAL_ANALOG_PINS 6
517+
#define TOTAL_PINS 15 // 9 digital + 3 analog
518+
#define IS_PIN_DIGITAL(p) ((p) >= 2 && (p) <= 14)
519+
#define IS_PIN_ANALOG(p) ((p) == 8 || (p) == 9 || (p) == 10 || (p) == 11 || (p) == 12 || (p) == 14) //A0~A5
520+
#define IS_PIN_PWM(p) ((p) == 3 || (p) == 5 || (p) == 6)
521+
#define IS_PIN_SERVO(p) ((p) >= 2 && (p) <= 7)
522+
#define IS_PIN_I2C(p) ((p) == SDA || (p) == SCL)
523+
#define IS_PIN_SPI(p) ((p) == CS || (p) == MOSI || (p) == MISO || (p) == SCK)
524+
#define PIN_TO_DIGITAL(p) (p)
525+
#define PIN_TO_ANALOG(p) ((p) - 8)
526+
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
527+
#define PIN_TO_SERVO(p) (p)
528+
529+
452530
// Sanguino
453531
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
454532
#define TOTAL_ANALOG_PINS 8
@@ -665,29 +743,27 @@ writePort(port, value, bitmask): Write an 8 bit port.
665743
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
666744
#define PIN_TO_SERVO(p) ((p) - 2)
667745

668-
// Nucleo STM32F429
669-
#elif defined(STM32)
670-
#define TOTAL_ANALOG_PINS NUM_ANALOG_INPUTS //7
671-
#define TOTAL_PINS NUM_DIGITAL_PINS //22 : All pins can be digital
672-
#define TOTAL_PORTS 3
673-
#define VERSION_BLINK_PIN LED_BUILTIN
674-
#define PIN_SERIAL_RX 9
675-
#define PIN_SERIAL_TX 8
676-
#define PIN_SERIAL1_RX 0
677-
#define PIN_SERIAL1_TX 1
678-
#define PIN_SERIAL2_RX 8
679-
#define PIN_SERIAL2_TX 9
680-
#define IS_PIN_DIGITAL(p) ((p) >= 2 && (p) < TOTAL_PINS)
681-
#define IS_PIN_ANALOG(p) ((p) >= 16 && (p) < TOTAL_PINS)
682-
#define IS_PIN_PWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11)
683-
#define IS_PIN_SERVO(p) IS_PIN_DIGITAL((p))
684-
#define IS_PIN_I2C(p) ((p) == 14 || (p) == 15)
746+
// ESP8266
747+
// note: boot mode GPIOs 0, 2 and 15 can be used as outputs, GPIOs 6-11 are in use for flash IO
748+
#elif defined(ESP8266)
749+
#define TOTAL_ANALOG_PINS NUM_ANALOG_INPUTS
750+
#define TOTAL_PINS A0 + NUM_ANALOG_INPUTS
751+
#define PIN_SERIAL_RX 3
752+
#define PIN_SERIAL_TX 1
753+
#define IS_PIN_DIGITAL(p) (((p) >= 0 && (p) <= 5) || ((p) >= 12 && (p) < A0))
754+
#define IS_PIN_ANALOG(p) ((p) >= A0 && (p) < A0 + NUM_ANALOG_INPUTS)
755+
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
756+
#define IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) < MAX_SERVOS)
757+
#define IS_PIN_I2C(p) ((p) == SDA || (p) == SCL)
685758
#define IS_PIN_SPI(p) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
686-
#define IS_PIN_SERIAL(p) ((p) == 0 || (p) == 1)
759+
#define IS_PIN_INTERRUPT(p) (digitalPinToInterrupt(p) > NOT_AN_INTERRUPT)
760+
#define IS_PIN_SERIAL(p) ((p) == PIN_SERIAL_RX || (p) == PIN_SERIAL_TX)
687761
#define PIN_TO_DIGITAL(p) (p)
688-
#define PIN_TO_ANALOG(p) ((p) - 16)
689-
#define PIN_TO_PWM(p) (p)
762+
#define PIN_TO_ANALOG(p) ((p) - A0)
763+
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
690764
#define PIN_TO_SERVO(p) (p)
765+
#define DEFAULT_PWM_RESOLUTION 10
766+
691767

692768
// anything else
693769
#else
@@ -703,6 +779,9 @@ writePort(port, value, bitmask): Write an 8 bit port.
703779
#define IS_PIN_SERIAL(p) 0
704780
#endif
705781

782+
#ifndef DEFAULT_PWM_RESOLUTION
783+
#define DEFAULT_PWM_RESOLUTION 8
784+
#endif
706785

707786
/*==============================================================================
708787
* readPort() - Read an 8 bit port

0 commit comments

Comments
 (0)