Interblocco tra due uscite

Salve a tutti, io avrei bisogno di creare un interblocco tra due uscite, cioè se sta andando una, l'altra non deve attivarsi, e viceversa. Come potrei fare?

Usi un flag booleano che metti a true quanto attivi la prima uscita e a false quando la spegni, e condizioni l'attivazione della seconda al fatto che questo flag sia falso.

Quindi devo usare la funzione logical or?

:o Dove ho detto questo???

la logica potrebbe essere:

boolean flag_uscita1 = false;
boolean flag_uscita2 = false;

if (voglio_usare_uscita1 && !flag_uscita2) {
  flag_uscita1 = true;
  // faccio il resto
}

if (voglio_usare_uscita2 && !flag_uscita1) {
  flag_uscita2 = true;
  // faccio il resto
}

scritta così fa schifo, ma le info a disposizione sono poche... è giusto per cercare di chiarire una possibile soluzione... da qualche parte devi prevedere di resettare anche i flag in base a quello che fai / devi fare.

Questo è il mio codice:

#include <Keypad.h>

const byte ROWS = 4; // quattro righe
const byte COLS = 4; // quattro colonne
// Definizione del Keymap
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'#','0','*','D'}
};
// Connessione Keypad ROW0, ROW1, ROW2 e ROW3 ai pin Arduino
byte rowPins[ROWS] = { 2,3,4,5};
// Connessione Kaypad COL0, COL1 e COL2 ai pin Arduino
byte colPins[COLS] = { 6,7,8,9 }; 

// Creazione del Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define LEDPIN1 13  
#define LEDPIN2 12
byte statoRele0,statoRele1,statoRele2,statoRele3,statoRele4,statoRele5,statoRele6,statoRele7,statoRele8,statoRele9;
unsigned long prevMillis0,prevMillis1,prevMillis2,prevMillis3,prevMillis4,prevMillis5,prevMillis6,prevMillis7,prevMillis8,prevMillis9;

void setup()
{ pinMode(LEDPIN1,OUTPUT);
  pinMode(LEDPIN2,OUTPUT);
  statoRele0=1;       
  statoRele1=1;
  statoRele2=1;
  statoRele3=1;
  statoRele4=1;
  statoRele5=1;
  statoRele6=1;
  statoRele7=1;
  statoRele8=1;
  statoRele9=1;
  digitalWrite(LEDPIN2, statoRele0);
  digitalWrite(LEDPIN1, statoRele1);
  digitalWrite(LEDPIN1, statoRele3);
  digitalWrite(LEDPIN1, statoRele4);
  digitalWrite(LEDPIN1, statoRele5);
  digitalWrite(LEDPIN1, statoRele6);
  digitalWrite(LEDPIN1, statoRele7);
  digitalWrite(LEDPIN1, statoRele8);
  digitalWrite(LEDPIN1, statoRele9);
  Serial.begin(9600);
  delay(1000);
}

void loop()
{ char key = kpd.getKey();
  if(key) Serial.println(key);
  switch (key)
  { case '1':
        statoRele1=0;         // attivare relè ALZATA e conteggio   
        prevMillis1 = millis();     // istante in cui ha premuto
        break;

    case '2':
        statoRele2=0;         // attivare relè ALZATA e conteggio   
        prevMillis2= millis();     // istante in cui ha premuto
        break;

    case '3':
        statoRele3=0;         // attivare relè ALZATA e conteggio   
        prevMillis3= millis();     // istante in cui ha premuto
        break;

    case '4':
        statoRele4=0;         // attivare relè ALZATA e conteggio   
        prevMillis4= millis();     // istante in cui ha premuto
        break;

    case '5':
        statoRele5=0;         // attivare relè ALZATA e conteggio   
        prevMillis5= millis();     // istante in cui ha premuto
        break;

    case '6':
        statoRele6=0;         // attivare relè ALZATA e conteggio   
        prevMillis6= millis();     // istante in cui ha premuto
        break;

    case '7':
        statoRele7=0;         // attivare relè ALZATA e conteggio   
        prevMillis7= millis();     // istante in cui ha premuto
        break;

    case '8':
        statoRele8=0;         // attivare relè ALZATA e conteggio   
        prevMillis8= millis();     // istante in cui ha premuto
        break;

    case '9':
        statoRele9=0;         // attivare relè ALZATA e conteggio   
        prevMillis9= millis();     // istante in cui ha premuto
        break;

    case '0':
        statoRele0=0;         // attivare relè DISCESA e conteggio   
        prevMillis0= millis();     // istante in cui ha premuto
        break;
  }

  
  if(statoRele1==0) 
  { if( millis()- prevMillis1 > 1000 )    // passati 1 secondO da quando si preme
    { statoRele1=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele1);
  }

    if(statoRele2==0) 
  { if( millis()- prevMillis2 > 2000 )    // passati 2 secondi da quando si preme
    { statoRele2=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele2);
  }

    if(statoRele3==0) 
  { if( millis()- prevMillis3 > 3000 )    // passati 3 secondi da quando si preme
    { statoRele3=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele3);
  }

    if(statoRele4==0) 
  { if( millis()- prevMillis4 > 4000 )    // passati 4 secondi da quando si preme
    { statoRele4=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele4);
  }

  if(statoRele5==0) 
  { if( millis()- prevMillis5 > 5000 )    // passati 5 secondi da quando si preme
    { statoRele5=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele5);
  }

  if(statoRele6==0) 
  { if( millis()- prevMillis6 > 6000 )    // passati 6 secondi da quando si preme
    { statoRele6=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele6);
  }

  if(statoRele7==0) 
  { if( millis()- prevMillis7 > 7000 )    // passati 7 secondi da quando si preme
    { statoRele7=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele7);
  }

  if(statoRele8==0) 
  { if( millis()- prevMillis8 > 8000 )    // passati 8 secondi da quando si preme
    { statoRele8=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele8);
  }

  if(statoRele9==0) 
  { if( millis()- prevMillis9 > 9000 )    // passati 9 secondi da quando si preme
    { statoRele9=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN1,statoRele9);
  }
  
  if(statoRele0==0)
  { if( millis()- prevMillis0 > 10000 )    // passati 10 secondi da quando si preme
    { statoRele0=1;    // disattivare relè e conteggio
    }
    digitalWrite(LEDPIN2,statoRele0);
  }


}

Ho LEDPIN1 e LEDPIN2 come uscite, come dovrei fare esattamente?

sbaglio o è lo stesso quesito posto qui:

hai dato un’occhiata alla soluzione che ti ha proposto Brunello?