File tree 2 files changed +42
-2
lines changed
2 files changed +42
-2
lines changed Original file line number Diff line number Diff line change @@ -67,6 +67,42 @@ PinName analogInputToPinName(uint32_t pin)
67
67
return pn ;
68
68
}
69
69
70
+ bool pinIsAnalogInput (uint32_t pin )
71
+ {
72
+ bool ret = false;
73
+ #if NUM_ANALOG_INPUTS > 0
74
+ #ifndef NUM_ANALOG_LAST
75
+ ret = (pin >= A0 ) && (pin < (A0 + NUM_ANALOG_INPUTS ));
76
+ #else
77
+ for (uint32_t i = 0 ; i < NUM_ANALOG_INPUTS ; i ++ ) {
78
+ if (analogInPin [i ] == pin ) {
79
+ ret = true;
80
+ break ;
81
+ }
82
+ }
83
+ #endif /* NUM_ANALOG_LAST */
84
+ #endif /* NUM_ANALOG_INPUTS > 0 */
85
+ return ret ;
86
+ }
87
+
88
+ uint32_t digitalPinToAnalogInput (uint32_t pin )
89
+ {
90
+ uint32_t ret = NUM_ANALOG_INPUTS ;
91
+ #if NUM_ANALOG_INPUTS > 0
92
+ #ifndef NUM_ANALOG_LAST
93
+ ret = pin - A0 ;
94
+ #else
95
+ for (uint32_t i = 0 ; i < NUM_ANALOG_INPUTS ; i ++ ) {
96
+ if (analogInPin [i ] == pin ) {
97
+ ret = i ;
98
+ break ;
99
+ }
100
+ }
101
+ #endif /* NUM_ANALOG_LAST */
102
+ #endif /* NUM_ANALOG_INPUTS > 0 */
103
+ return ret ;
104
+ }
105
+
70
106
#ifdef __cplusplus
71
107
}
72
108
#endif
Original file line number Diff line number Diff line change 17
17
*/
18
18
#ifndef _PINS_ARDUINO_H_
19
19
#define _PINS_ARDUINO_H_
20
+ #include <stdbool.h>
20
21
#include <stdlib.h> /* Required for static_assert */
21
22
// Include board variant
22
23
#include "variant.h"
@@ -323,12 +324,15 @@ PinName analogInputToPinName(uint32_t pin);
323
324
// return first occurence of linked PinName (PYx)
324
325
#define digitalPinFirstOccurence (p ) (pinNametoDigitalPin(digitalPinToPinName(p)))
325
326
326
- // Specific for Firmata. As some pins could be duplicated,
327
- // ensure 'p' is not one of the serial pins
327
+ // Specific for Firmata.
328
+ // Some pins could be duplicated, ensure 'p' is not one of the serial pins
328
329
#if defined(PIN_SERIAL_RX ) && defined(PIN_SERIAL_TX )
329
330
#define pinIsSerial (p ) ((digitalPinFirstOccurence(p) == PIN_SERIAL_RX) ||\
330
331
(digitalPinFirstOccurence(p) == PIN_SERIAL_TX))
331
332
#endif
333
+ // Convenient macro to handle Analog
334
+ bool pinIsAnalogInput (uint32_t pin );
335
+ uint32_t digitalPinToAnalogInput (uint32_t pin );
332
336
333
337
#ifdef __cplusplus
334
338
}
You can’t perform that action at this time.
0 commit comments