File tree 2 files changed +27
-1
lines changed
2 files changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -132,6 +132,16 @@ uint32_t analogRead( uint32_t ulPin )
132
132
uint32_t resolution ;
133
133
int16_t value ;
134
134
135
+ #ifdef ARDUINO_ADC_NON_STANDARD_PINS
136
+ ulPin = _analogChannelPin (ulPin );
137
+ #elif NUM_ANALOG_INPUTS > 0
138
+ if (ulPin < A0 ) {
139
+ ulPin += A0 ;
140
+ }
141
+ #else
142
+ return 0 ;
143
+ #endif
144
+
135
145
if (ulPin >= PINS_COUNT ) {
136
146
return 0 ;
137
147
}
Original file line number Diff line number Diff line change @@ -40,7 +40,6 @@ extern "C"
40
40
// LEDs
41
41
#define PIN_LED (13)
42
42
#define LED_BUILTIN PIN_LED
43
- // #define
44
43
45
44
// Buttons
46
45
#define PIN_BUTTON_A (5)
@@ -65,6 +64,23 @@ static const uint8_t A4 = PIN_A4 ;
65
64
static const uint8_t A5 = PIN_A5 ;
66
65
#define ADC_RESOLUTION 10
67
66
67
+ // Non standard distribution of Analog Pins requires a lookup table
68
+ #define ARDUINO_ADC_NON_STANDARD_PINS
69
+ __inline__ uint32_t _analogChannelPin (uint32_t pin ) __attribute__((always_inline ));
70
+ __inline__ uint32_t _analogChannelPin (uint32_t pin ) {
71
+ switch (pin ) {
72
+ case 0 : return PIN_A0 ;
73
+ case 1 : return PIN_A1 ;
74
+ case 2 : return PIN_A2 ;
75
+ case 3 : return PIN_A3 ;
76
+ case 4 : return PIN_A4 ;
77
+ case 5 : return PIN_A5 ;
78
+ case 10 : return PIN_A5 ;
79
+ // Otherwise non-analog pin so return out of range pin to exit early
80
+ default : return PINS_COUNT ;
81
+ }
82
+ }
83
+
68
84
/*
69
85
* Serial interfaces
70
86
*/
You can’t perform that action at this time.
0 commit comments