File tree Expand file tree Collapse file tree 2 files changed +42
-2
lines changed Expand file tree Collapse file tree 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)
6767 return pn ;
6868}
6969
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+
70106#ifdef __cplusplus
71107}
72108#endif
Original file line number Diff line number Diff line change 1717*/
1818#ifndef _PINS_ARDUINO_H_
1919#define _PINS_ARDUINO_H_
20+ #include <stdbool.h>
2021#include <stdlib.h> /* Required for static_assert */
2122// Include board variant
2223#include "variant.h"
@@ -323,12 +324,15 @@ PinName analogInputToPinName(uint32_t pin);
323324// return first occurence of linked PinName (PYx)
324325#define digitalPinFirstOccurence (p ) (pinNametoDigitalPin(digitalPinToPinName(p)))
325326
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
328329#if defined(PIN_SERIAL_RX ) && defined(PIN_SERIAL_TX )
329330#define pinIsSerial (p ) ((digitalPinFirstOccurence(p) == PIN_SERIAL_RX) ||\
330331 (digitalPinFirstOccurence(p) == PIN_SERIAL_TX))
331332#endif
333+ // Convenient macro to handle Analog
334+ bool pinIsAnalogInput (uint32_t pin );
335+ uint32_t digitalPinToAnalogInput (uint32_t pin );
332336
333337#ifdef __cplusplus
334338}
You can’t perform that action at this time.
0 commit comments