@@ -141,6 +141,13 @@ writePort(port, value, bitmask): Write an 8 bit port.
141141#define digitalPinHasPWM (p ) IS_PIN_DIGITAL(p)
142142#endif
143143
144+ #undef IS_PIN_INTERRUPT
145+ #if defined(digitalPinToInterrupt ) && defined(NOT_AN_INTERRUPT )
146+ #define IS_PIN_INTERRUPT (p ) (digitalPinToInterrupt(p) > NOT_AN_INTERRUPT)
147+ #else
148+ #define IS_PIN_INTERRUPT (p ) (0)
149+ #endif
150+
144151// Arduino Duemilanove, Diecimila, and NG
145152#if defined(__AVR_ATmega168__ ) || defined(__AVR_ATmega328P__ ) || defined(__AVR_ATmega328__ )
146153#if defined(NUM_ANALOG_INPUTS ) && NUM_ANALOG_INPUTS == 6
@@ -447,6 +454,30 @@ writePort(port, value, bitmask): Write an 8 bit port.
447454#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
448455#define PIN_TO_SERVO (p ) (p) // deprecated since v2.4
449456
457+ // Arduino UNO R4 Minima and Wifi
458+ // The pinout is the same as for the classical UNO R3
459+ #elif defined(ARDUINO_UNOR4_MINIMA ) || defined(ARDUINO_UNOR4_WIFI )
460+ #if defined(NUM_ANALOG_INPUTS ) && NUM_ANALOG_INPUTS == 6
461+ #define TOTAL_ANALOG_PINS 6
462+ #define TOTAL_PINS 20 // 14 digital + 6 analog
463+ #else
464+ #define TOTAL_ANALOG_PINS 8
465+ #define TOTAL_PINS 22 // 14 digital + 8 analog
466+ #endif
467+ // These have conflicting(?) definitions in the core for this CPU
468+ #undef IS_PIN_PWM
469+ #undef IS_PIN_ANALOG
470+ #define VERSION_BLINK_PIN 13
471+ #define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
472+ #define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) < 14 + TOTAL_ANALOG_PINS)
473+ #define IS_PIN_PWM (p ) digitalPinHasPWM(p)
474+ #define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
475+ #define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
476+ #define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
477+ #define PIN_TO_DIGITAL (p ) (p)
478+ #define PIN_TO_ANALOG (p ) ((p) - 14)
479+ #define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
480+ #define PIN_TO_SERVO (p ) ((p) - 2)
450481
451482// Teensy 1.0
452483#elif defined(__AVR_AT90USB162__ )
0 commit comments