43 OUTPUT_OPENDRAIN = 0x4,
51#define PI 3.1415926535897932384626433832795
52#define HALF_PI 1.5707963267948966192313216916398
53#define TWO_PI 6.283185307179586476925286766559
54#define DEG_TO_RAD 0.017453292519943295769236907684886
55#define RAD_TO_DEG 57.295779513082320876798154814105
56#define EULER 2.718281828459045235360287471352
62#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
66#define radians(deg) ((deg)*DEG_TO_RAD)
70#define degrees(rad) ((rad)*RAD_TO_DEG)
74#define sq(x) ((x)*(x))
77typedef void (*voidFuncPtr)(void);
78typedef void (*voidFuncPtrParam)(
void*);
82#define lowByte(w) ((uint8_t) ((w) & 0xff))
83#define highByte(w) ((uint8_t) ((w) >> 8))
85#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
86#define bitSet(value, bit) ((value) |= (1UL << (bit)))
87#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
88#define bitToggle(value, bit) ((value) ^= (1UL << (bit)))
89#define bitWrite(value, bit, bitvalue) ((bitvalue) ? bitSet((value), (bit)) : bitClear((value), (bit)))
92#define bit(b) (1UL << (b))
101void initVariant(
void);
104int atexit(
void (*func)()) __attribute__((weak));
106int main() __attribute__((weak));
108#ifdef EXTENDED_PIN_MODE
110typedef uint32_t pin_size_t;
112typedef uint8_t pin_size_t;
115void pinMode(pin_size_t pinNumber, PinMode pinMode);
116void digitalWrite(pin_size_t pinNumber, PinStatus status);
117PinStatus digitalRead(pin_size_t pinNumber);
118int analogRead(pin_size_t pinNumber);
119void analogReference(uint8_t mode);
120void analogWrite(pin_size_t pinNumber,
int value);
122unsigned long millis(
void);
123unsigned long micros(
void);
124void delay(
unsigned long);
125void delayMicroseconds(
unsigned int us);
126unsigned long pulseIn(pin_size_t pin, uint8_t state,
unsigned long timeout);
127unsigned long pulseInLong(pin_size_t pin, uint8_t state,
unsigned long timeout);
129void shiftOut(pin_size_t dataPin, pin_size_t clockPin, BitOrder bitOrder, uint8_t val);
130uint8_t shiftIn(pin_size_t dataPin, pin_size_t clockPin, BitOrder bitOrder);
132void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode);
133void attachInterruptParam(pin_size_t interruptNumber, voidFuncPtrParam callback, PinStatus mode,
void* param);
134void detachInterrupt(pin_size_t interruptNumber);
144 template<
class T,
class L>
145 auto min(
const T& a,
const L& b) ->
decltype((b < a) ? b : a)
147 return (b < a) ? b : a;
150 template<
class T,
class L>
151 auto max(
const T& a,
const L& b) ->
decltype((b < a) ? b : a)
153 return (a < b) ? b : a;
158 ({ __typeof__ (a) _a = (a); \
159 __typeof__ (b) _b = (b); \
160 _a < _b ? _a : _b; })
164 ({ __typeof__ (a) _a = (a); \
165 __typeof__ (b) _b = (b); \
166 _a > _b ? _a : _b; })
173uint16_t makeWord(uint16_t w);
174uint16_t makeWord(
byte h,
byte l);
176#define word(...) makeWord(__VA_ARGS__)
178unsigned long pulseIn(uint8_t pin, uint8_t state,
unsigned long timeout = 1000000L);
179unsigned long pulseInLong(uint8_t pin, uint8_t state,
unsigned long timeout = 1000000L);
181void tone(uint8_t _pin,
unsigned int frequency,
unsigned long duration = 0);
182void noTone(uint8_t _pin);
186long random(
long,
long);
187void randomSeed(
unsigned long);
188long map(
long,
long,
long,
long,
long);