Consigli su programmazione '-.-

Non sono sicuro di aver capito.

Vediamo il codice fino ad un certo punto.
//#define LED_ON_BOARD 13 // il led sulla board 2009 o UNO e sul pin 13
// ma LED_BUILTIN è già definita ed usabile e quindi la usiamo

#define P1_BUTTON 2
#define P2_BUTTON 3

#define INCREMENT 0
#define DECREMENT 1
#define BUTTON_TIMEOUT 255

uint16_t piecesCounter;

byte counterFlag; // counterFlag = INCREMENT | DECREMENT

Setup()
{
    piecesCounter = 0;                     
    counterFlag = INCREMENT;         // default increment pieces counter
    pinMode(P1_BUTTON, INPUT);     // input pin with external resistor pullup
    pinMode(P2_BUTTON, INPUT);     // input pin with external resistor pullup
    // internal pullup non mi ricordo come si attiva
    
    pinMode(LED_BUILTIN, OUT);     // output mode on pin 13
}

loop()
{
    if (!digitalRead(P1_BUTTON) { // button pressed
        for(uint8_t i = 0; i < BUTTON_TIMEOUT; i++) {
            if (!digitalRead(P2_BUTTON) 
                counterFlag = INCREMENT;
        }        
    }
    if (!digitalRead(P2_BUTTON) { // button pressed
        for(byte i = 0; i < BUTTON_TIMEOUT; i++) {
            if (!digitalRead(P1_BUTTON) 
                counterFlag = DECREMENT;
        }        
    }
    if (counterFlag == INCREMENT)     
       piecesCounter++;
    else
       piecesCounter--;
    
    if (piecesCounter)          // turn led on or off if piecesCounte is true
       digitalWrite(LED_BUILTIN, HIGH)
    else
       digitalWrite(LED_BUILTIN, LOW)

}

Vedi se lo capisci cosa fa il for all'interno delle if.

Ciao.