2 Way Position Selector Switch Problem

Hello to all,

First off all i am using Arduino Due.
I have 2 way position selector switch pins are connected to 2 and 3. And i have 5 push buttons which connects 4, 5, 6, 7, 8 pins.

In my algorithm, i need to make manual and automatic mode switch for my position selector.

I use 3.3v for buttons and I have 10k resistor with grounded for all of the buttons.
I checked, no circiut mistake.

It works normally for 5 minutes. Everything is fine.
After several times i can't select position. It always be on auto mode. I cant switch to manual mode.

How can i fix this? Is there coding error?

Thank you!

Here is my code.

const int modPinOto = 2;               // otomatik mod pini
const int modPinMan = 3 ;              // manuel mod pini
const int modPinOtoBaslat = 4 ;        // otomatik modda baslatma pini
const int modPinManIleri = 5;          // motor ileri pini
const int modPinManGeri = 6 ;          // motor geri pini
const int modPinManDolum = 7;          // dolum pini
const int modPinManHome = 8 ;          // home pini
const int Dolum = 10 ;                 // dolum role pini
const int ledPin =  13;                // led pini

int modDurumOto = 0;      
int modDurumOtoBaslat = 0;
int modDurumMan = 0;
int modDurumManIleri = 0;      
int modDurumManGeri = 0;
int modDurumManDolum = 0;
int modDurumManHome = 0;



void setup() {
  pinMode(ledPin, OUTPUT);            // led pinini                 cikis olarak ayarla     
  pinMode(Dolum, OUTPUT);             // dolum role pinini          cikis olarak ayarla    
  pinMode(modPinOto, INPUT);          // modPinOto pinini           giris olarak ayarla
  pinMode(modPinOtoBaslat, INPUT);    // modPinOtoBaslat pinini     giris olarak ayarla
  pinMode(modPinMan, INPUT);          // modPinMan pinini           giris olarak ayarla
  pinMode(modPinManIleri, INPUT);     // modPinManIleri pinini      giris olarak ayarla
  pinMode(modPinManGeri, INPUT);      // modPinManGeri pinini       giris olarak ayarla
  pinMode(modPinManDolum, INPUT);     // modPinManDolum pinini      giris olarak ayarla
  pinMode(modPinManHome, INPUT);      // modPinManHome pinini       giris olarak ayarla
  Serial.begin(9600);
}

void loop(){
  modDurumOto = digitalRead(modPinOto);                       // Oto  buton durumunu oku
  modDurumMan = digitalRead(modPinMan);                       // Man  buton durumunu oku


if (modDurumOto == HIGH) 
   {       
     modDurumOtoBaslat = digitalRead(modPinOtoBaslat);     // OtoBaslat buton durumunu oku
       if (modDurumOtoBaslat == HIGH ) 
             {  
			            OtoBaslatFonksiyonu();                      // otobaslat fonksiyonunu calistiriyoruz      
             }
             else
             {
			          Serial.println("Otomatik Mod / Automatic Mode");
                digitalWrite(ledPin, HIGH);  
                Serial.println("Led");
                delay(100);
                digitalWrite(ledPin, LOW);
                Serial.println("Led");   
                delay(100); 
             } 
    }
else if (modDurumMan == HIGH) 
    {
       modDurumManIleri = digitalRead(modPinManIleri);       // ManIleri  buton durumunu oku
       modDurumManGeri = digitalRead(modPinManGeri);         // ManGeri   buton durumunu oku
       modDurumManDolum = digitalRead(modPinManDolum);       // ManDolum  buton durumunu oku
       modDurumManHome = digitalRead(modPinManHome);         // ManHome   buton durumunu oku	   
	   
			if (modDurumManIleri == HIGH )            // ileri butonunu kontrol ediyoruz.
			{  
	       IleriFonksiyonu();                     // ileri fonksiyonunu calistiriyoruz
			}
			else if (modDurumManGeri == HIGH )        // geri butonunu kontrol ediyoruz.
			{
			   GeriFonksiyonu();                      // ger fonksiyonunu calistiriyoruz
			}
			else if (modDurumManDolum == HIGH )       // dolum butonunu kontrol ediyoruz.
			{			 
			   DolumFonksiyonu();                     // dolum fonksiyonunu calistiriyoruz          
			}
			else if (modDurumManHome == HIGH )        // home butonunu kontrol ediyoruz.
			{
			   HomeFonksiyonu();                      // home fonksiyonunu calistiriyoruz
			}
			else
			{
	      Serial.println("Manuel Mod / Manual Mode");
        digitalWrite(ledPin, HIGH);  
        Serial.println("Led");
        delay(100);
        digitalWrite(ledPin, LOW); 
        Serial.println("Led");
        delay(100);
			}	  
    }
else
    {
          Serial.println("Pozisyon seciniz / Select Position");
    }
        
            
} //loop kapatma



void DolumFonksiyonu(){     
  Serial.println("Dolum Butonu / Fill Button");                                             
  
  delay(2000);
}

void HomeFonksiyonu(){ 
  Serial.println("Home Fonksiyonu / Home Button");
  
  delay(2000);
}

void IleriFonksiyonu(){ 
  Serial.println("Ileri Fonksiyonu / Forward Button");                                                
  
  delay(2000);
}

void GeriFonksiyonu(){      
  Serial.println("Geri Fonksiyonu / Backward Button");                                            
  
  delay(2000);
}

void OtoBaslatFonksiyonu(){    
  Serial.println("Oto Baslat Fonksiyonu / Auto Start Button");                                              
  
  delay(2000);
}

I tried internal pullup method.
It has same problem. After several minutes switch mode is not working correctly.

im going to take a guess as I can not really read the text. I think you are trying to push a button while in a delay. if you push the button during a delay it will do nothing until the delay is over. Its time to look at using millis timer instead of delays.