@@ -72,7 +72,7 @@ Firmata protocol and the actual pin numbers used by the Arduino
72
72
functions. Even though such mappings are often simple, pin
73
73
numbers received by Firmata protocol should always be used as
74
74
input to these macros, and the result of the macro should be
75
- used with with any Arduino function.
75
+ used with any Arduino function.
76
76
77
77
When Firmata is extended to support a new pin mode or feature,
78
78
a pair of macros should be added and used for all hardware
@@ -144,6 +144,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
144
144
#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
145
145
#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
146
146
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
147
+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==3)
147
148
#define PIN_TO_DIGITAL (p ) (p)
148
149
#define PIN_TO_ANALOG (p ) ((p) - 14)
149
150
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -160,6 +161,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
160
161
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
161
162
#define IS_PIN_I2C (p ) ((p) == SDA || (p) == SCL)
162
163
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
164
+ #define IS_PIN_INTERRUPT (p ) 0
163
165
#define PIN_TO_DIGITAL (p ) (p)
164
166
#define PIN_TO_ANALOG (p ) ((p) - FIRST_ANALOG_PIN)
165
167
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -176,6 +178,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
176
178
#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
177
179
#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
178
180
#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
181
+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==3)
179
182
#define PIN_TO_DIGITAL (p ) (p)
180
183
#define PIN_TO_ANALOG (p ) ((p) - 14)
181
184
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -194,6 +197,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
194
197
#define IS_PIN_SERVO (p ) ((p) >= 2 && (p) - 2 < MAX_SERVOS)
195
198
#define IS_PIN_I2C (p ) ((p) == 20 || (p) == 21)
196
199
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
200
+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==3 || (p)==18 || (p)==19 || (p)==20 || (p)==21)
197
201
#define PIN_TO_DIGITAL (p ) (p)
198
202
#define PIN_TO_ANALOG (p ) ((p) - 54)
199
203
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -210,6 +214,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
210
214
#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
211
215
#define IS_PIN_SERVO (p ) ((p) >= 2 && (p) - 2 < MAX_SERVOS)
212
216
#define IS_PIN_I2C (p ) ((p) == 20 || (p) == 21) // 70 71
217
+ #define IS_PIN_INTERRUPT (p ) IS_PIN_DIGITAL(p)
213
218
#define PIN_TO_DIGITAL (p ) (p)
214
219
#define PIN_TO_ANALOG (p ) ((p) - 54)
215
220
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -227,6 +232,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
227
232
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
228
233
#define IS_PIN_I2C (p ) (0)
229
234
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
235
+ #define IS_PIN_INTERRUPT (p ) ((p) == 0 || (p) == 1 || (p) == 2 ||(p) == 3 || (p) == 4 || (p) == 6 ||(p) == 7 ||(p) == 16)
230
236
#define PIN_TO_DIGITAL (p ) (p)
231
237
#define PIN_TO_ANALOG (p ) (0)
232
238
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -244,6 +250,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
244
250
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
245
251
#define IS_PIN_I2C (p ) ((p) == 5 || (p) == 6)
246
252
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
253
+ #define IS_PIN_INTERRUPT (p ) ((p) == 5 || (p) == 6 || (p) == 7 || (p) == 8)
247
254
#define PIN_TO_DIGITAL (p ) (p)
248
255
#define PIN_TO_ANALOG (p ) (((p)<22)?21-(p):11)
249
256
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -260,6 +267,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
260
267
#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
261
268
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
262
269
#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
270
+ #define IS_PIN_INTERRUPT (p ) IS_PIN_DIGITAL(p)
263
271
#define PIN_TO_DIGITAL (p ) (p)
264
272
#define PIN_TO_ANALOG (p ) (((p)<=23)?(p)-14:(p)-24)
265
273
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -277,6 +285,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
277
285
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
278
286
#define IS_PIN_I2C (p ) ((p) == 0 || (p) == 1)
279
287
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
288
+ #define IS_PIN_INTERRUPT (p ) ((p) == 0 || (p) == 1 || (p) == 2 ||(p) == 3 ||(p) == 18 ||(p) == 19 ||(p) == 36 ||(p) == 37)
280
289
#define PIN_TO_DIGITAL (p ) (p)
281
290
#define PIN_TO_ANALOG (p ) ((p) - 38)
282
291
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -294,12 +303,30 @@ writePort(port, value, bitmask): Write an 8 bit port.
294
303
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
295
304
#define IS_PIN_I2C (p ) ((p) == 2 || (p) == 3)
296
305
#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
306
+ #define IS_PIN_INTERRUPT (p ) ((p)==0 || (p)==1 || (p)==2 || (p)==3 || (p)==7)
297
307
#define PIN_TO_DIGITAL (p ) (p)
298
308
#define PIN_TO_ANALOG (p ) (p) - 18
299
309
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
300
310
#define PIN_TO_SERVO (p ) (p)
301
311
302
312
313
+ // Intel Galileo Board
314
+ #elif defined(ARDUINO_LINUX )
315
+ #define TOTAL_ANALOG_PINS 6
316
+ #define TOTAL_PINS 20 // 14 digital + 6 analog
317
+ #define VERSION_BLINK_PIN 13
318
+ #define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
319
+ #define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) <= 19)
320
+ #define IS_PIN_PWM (p ) digitalPinHasPWM(p)
321
+ #define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
322
+ #define IS_PIN_I2C (p ) ((p) == SDA || (p) == SCL)
323
+ #define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
324
+ #define PIN_TO_DIGITAL (p ) (p)
325
+ #define PIN_TO_ANALOG (p ) ((p) - 14)
326
+ #define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
327
+ #define PIN_TO_SERVO (p ) ((p) - 2)
328
+
329
+
303
330
// Sanguino
304
331
#elif defined(__AVR_ATmega644P__ ) || defined(__AVR_ATmega644__ )
305
332
#define TOTAL_ANALOG_PINS 8
@@ -310,6 +337,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
310
337
#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
311
338
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
312
339
#define IS_PIN_I2C (p ) ((p) == 16 || (p) == 17)
340
+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==10 || (p)==11)
313
341
#define PIN_TO_DIGITAL (p ) (p)
314
342
#define PIN_TO_ANALOG (p ) ((p) - 24)
315
343
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -326,6 +354,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
326
354
#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
327
355
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
328
356
#define IS_PIN_I2C (p ) ((p) == 4 || (p) == 5)
357
+ #define IS_PIN_INTERRUPT (p ) (0)
329
358
#define PIN_TO_DIGITAL (p ) (p)
330
359
#define PIN_TO_ANALOG (p ) ((p) - 36)
331
360
#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -339,7 +368,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
339
368
340
369
// as long this is not defined for all boards:
341
370
#ifndef IS_PIN_SPI
342
- #define IS_PIN_SPI (p ) 0
371
+ #define IS_PIN_SPI (p ) (0)
343
372
#endif
344
373
345
374
/*==============================================================================
0 commit comments