leggere la pressione quasi simultanea di 2 pulsanti

Salve gente, sto muovendo i miei primi piccoli passi nel mondo di Arduino, il mio progetto (da realizzare in tutta calma!) è di realizzare un piccolo tagliaerba automatico che gironzoli per il giradino. L'idea è quella semplicissima dei 2 switch anteriori che rilevano gli ostacoli per far indietreggiare, inclinare e ripartire il piccolo robot. Un programmino funzionante l'ho già scritto, ma mi sono bloccato sulla eventuale pressione di entrambi gli switch in un tempo molto breve (2-300 ms esagerando), per conferirgli in quel caso un comportamento più consono.

//Primo test programma per robot

#define DES_AV 5
#define SIS_AV 7
#define DES_IND 6
#define SIS_IND 9
#define OST_DES 4
#define OST_SIS 12

int ostdes = 0;
int ostsis = 0;
int olddes = 0;
int oldsis = 0;
int statdes = 0;
int statsis = 0;
byte mode = 0;
unsigned long rilOstdes = 0;
unsigned long rilOstsis = 0;

void setup(){
  pinMode(DES_AV,OUTPUT);
  pinMode(SIS_AV,OUTPUT);
  pinMode(DES_IND,OUTPUT);
  pinMode(SIS_IND,OUTPUT);
  pinMode(OST_DES,INPUT);
  pinMode(OST_SIS,INPUT);
}

void loop(){
   ostdes = digitalRead (OST_DES);                                  //Legge i pulsanti
   ostsis = digitalRead (OST_SIS);
    
   if ((ostdes==HIGH) && (olddes==LOW)){
     statdes=1-statdes;
     rilOstdes=millis();
    delay(25);
    }
    olddes=ostdes;
 
    if ((ostsis==HIGH) && (oldsis==LOW)){
     statsis=1-statsis;
     rilOstsis=millis();
    delay(25);
    }
    oldsis=ostsis;
  

 
 if ((statdes==0) && (statsis==0)){                               //Se nessun pulsante è premuto cammina
 digitalWrite(DES_AV,HIGH);                                         
 digitalWrite(SIS_AV,HIGH);
 }else{
 if ((statdes==1) && (statsis==0)){         //altrimenti attribuisci a mode un valore relativo alla posizione dell'ostacolo
   mode=1;
   delay(100);
 }
 if ((statdes==0) && (statsis==1)){
   mode=2;
   delay(100);
 }
 if ((statdes==1) && (statsis==1)){
   mode=3;
   delay(100);
 }
 digitalWrite(DES_AV,LOW);                                            //ferma i motori e retrocedi
 digitalWrite(SIS_AV,LOW);
 delay(500);
 digitalWrite(DES_IND,HIGH);
 digitalWrite(SIS_IND,HIGH);
 delay(700);
 digitalWrite(DES_IND,LOW);
 digitalWrite(SIS_IND,LOW);
 }
 
 switch (mode){
   
   case 1:                                                          //se l'ostacolo è a destra gira a sinistra
   digitalWrite(DES_AV,HIGH);
   delay(500);
   digitalWrite(DES_AV,LOW);
   delay(100);
   mode=0;
   statdes=0;
   statsis=0;
   break;
   
   case 2:
   digitalWrite(SIS_AV,HIGH);                                        //se l'ostacolo è a sinistra gira a destra
   delay(500);
   digitalWrite(SIS_AV,LOW);
   delay(100);
   mode=0;
   statdes=0;
   statsis=0;
   break;
   
   case 3:                                                          //se l'ostacolo è al centro ruota su te stesso
   digitalWrite(DES_AV,HIGH);
   digitalWrite(SIS_IND,HIGH);
   delay(1000);
   digitalWrite(DES_AV,LOW);
   digitalWrite(SIS_IND,LOW);
   delay(100);
   mode=0;
   statdes=0;
   statsis=0;
   break;
 }
}

questo è il codice scritto fino ad ora, ho fatto diversi tentativi del tipo se millis-rilOstdes<500||millis-rilOstsis&&statdes==0&&statsis==0 ripeti la lettura altrimenti prosegui, ma fino ad ora non ho ottenuto alcun risultato, qualcuno avrebbe la pazienza di darmi qualche indicazione dalla quale sviluppare un codice funzionante? Dimenticavo, ho fatto anche qualche tentativo con while ma nulla...

Vi ringrazio per l'attenzione!

Il tuo codice funziona solo se i pulsanti sono premuti nello stesso preciso momento, cosa che è praticamente impossibile.
Per far sì che possa funzionare anche con una differenza temporale di x millisecondi devi usare dei timer da far partire e controllare finché non è passato il tempo da te impostato.
Se in tale lasso di tempo non è stato premuto anche l'altro switch, allora esegui la funzione di quello switch (evitare l'ostacolo a SX o a DX) altrimenti gli fai cambiare rotta.

Devi usare la funzione millis() che restituisce un numero che indica il tempo trascorso in millisecondi dall'avvio dello sketch e con quello fare dei cicli di controllo e continuare a leggere durante quel ciclo i pulsanti. Solo al passaggio del tempo prefissato, eseguirai le operazioni.

leo72:
Devi usare la funzione millis() che restituisce un numero che indica il tempo trascorso in millisecondi dall'avvio dello sketch e con quello fare dei cicli di controllo e continuare a leggere durante quel ciclo i pulsanti. Solo al passaggio del tempo prefissato, eseguirai le operazioni.

In effetti ho fatto diversi tentativi proprio utilizzando la funzione millis() ma ancora non ho ottenuto risultati. Mi consigli di creare una "funzione lettura" e farla eseguire fino a x milllisecondi dopo la pressione di uno dei pulsanti?

Chiedo scusa per il doppio post ma ho finalmente risolto, non avevo ben compreso l'utilità del comando "return"! Ora il programma funziona! Ringrazio comunque per l'attenzione!
Devo mettere qualcosa tipo [risolto] sul titolo??

un bel "[risolto]" e lo sketch finale sarebbero senz'altro utili!