Warning durante la verifica sketch

il "perchè" te lo dice il warning stesso...perchè ( p ) è considerato come unsigned e quindi la verifica ( p ) >= 0 ritorna sempre "true"....gli altri sono conseguenze di questo.

io ho fato una prova...alla prima compilazione ho il tuo stesso warning...alla seconda compilazione no...e qua non so il perchè.

ho provato per sfizio a modificare la linea incriminata da:

#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0))

a

#define digitalPinToPCICR(p)    (((((p) == 0) || (p) > 0) && (p) <= 21) ? (&PCICR) : ((uint8_t *)0))

ed il warning non appare alla prima compilazione.
questa riga te la devi cercare nel file pins_arduino.h presente nel percorso :

/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h