Thursday, May 1, 2025

Tovchluurtai Shoo

 #include<AFMotor.h>

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

int IR1=A3;
int IR2=A2;
int IR3=A1;
int IR4=A0;

int h=80;
int m=60;
int k=0;

int count=0;  
boolean state = true;

const int buttonPins1 = 9;
const int buttonPins2 = 10;
const int buttonPins3 = 2;
int buttonStates1 =0;     // Store button states
int buttonStates2 =0;
int buttonStates3 =0;
int button;

void setup() {

pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(IR4, INPUT);
  pinMode(buttonPins1, INPUT_PULLUP); // Enable internal pull-up
  pinMode(buttonPins2, INPUT_PULLUP);
  pinMode(buttonPins3, INPUT_PULLUP);
 
 Serial.begin(9600);

  motor1.setSpeed(h); motor1.run(FORWARD);
  motor2.setSpeed(h);  motor2.run(FORWARD);
  delay(500);

}

void loop() {
buttonStates1 = digitalRead(buttonPins1);
buttonStates2 = digitalRead(buttonPins2);
buttonStates3 = digitalRead(buttonPins3);


int s1 = digitalRead(IR1);
int s2 = digitalRead(IR2);
int s3 = digitalRead(IR3);
int s4 = digitalRead(IR4);
//Serial.println(s1);
if (buttonStates1 == LOW) { // Tovchluur 1-iin code
     button=1;      }
       
   while(button){
shugamDagah();
tooloh1();
    }

if (buttonStates2 == LOW) { // Tovchluur 1-iin code
     button=2;      }
       
   while(button){
shugamDagah();
tooloh2();
    }
if (buttonStates3 == LOW) { // Tovchluur 1-iin code
     button=3;      }
       
   while(button){
shugamDagah();
tooloh3();
    }



}
void shugamDagah()
{
//if(digitalRead(IR1)==0 && digitalRead(IR2)==0 && digitalRead(IR3)==0 && digitalRead(IR4)==0){uragshaa();}
//if(digitalRead(IR1)==1 && digitalRead(IR2)==1 && digitalRead(IR3)==1 && digitalRead(IR4)==1){  motor1.setSpeed(150);motor1.run(FORWARD);motor2.setSpeed(150);motor2.run(FORWARD); } //1111
if(digitalRead(IR1)==0 && digitalRead(IR2)==1 && digitalRead(IR3)==1 && digitalRead(IR4)==0){ motor1.setSpeed(h);motor1.run(FORWARD); motor2.setSpeed(h); motor2.run(FORWARD); }//0110
else if(digitalRead(IR1)==1 && digitalRead(IR2)==0 && digitalRead(IR3)==0 && digitalRead(IR4)==0){ motor1.setSpeed(k);  motor1.run(FORWARD);motor2.setSpeed(h); motor2.run(FORWARD); }//1000
else if(digitalRead(IR1)==1 && digitalRead(IR2)==1 && digitalRead(IR3)==0 && digitalRead(IR4)==0){ motor1.setSpeed(m);motor1.run(FORWARD);motor2.setSpeed(h);motor2.run(FORWARD);} //1100
else if(digitalRead(IR1)==0 && digitalRead(IR2)==0 && digitalRead(IR3)==0 && digitalRead(IR4)==1){motor1.setSpeed(h);  motor1.run(FORWARD);motor2.setSpeed(k); motor2.run(FORWARD); }//0001
else if(digitalRead(IR1)==0 && digitalRead(IR2)==0 && digitalRead(IR3)==1 && digitalRead(IR4)==1){ motor1.setSpeed(h);motor1.run(FORWARD);motor2.setSpeed(m);motor2.run(FORWARD);} //0011
else if(digitalRead(IR1)==0 && digitalRead(IR2)==1 && digitalRead(IR3)==0 && digitalRead(IR4)==0){ motor1.setSpeed(m); motor1.run(FORWARD);motor2.setSpeed(h);motor2.run(FORWARD); } //0100
else if(digitalRead(IR1)==0 && digitalRead(IR2)==0 && digitalRead(IR3)==1 && digitalRead(IR4)==0){motor1.setSpeed(h); motor1.run(FORWARD);motor2.setSpeed(m);motor2.run(FORWARD); }//0010
}
void tooloh1()
{
if (digitalRead(IR1) && digitalRead(IR2) && digitalRead(IR3) && digitalRead(IR4) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);  
    if(count==5) {uragshaa();delay(200);baruun1();delay(430);}
    if(count==7) {uragshaa();delay(200);baruun1();delay(430);}
    if(count==10) {zogs();delay(20000000);}
     }  
 if (!digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3) && !digitalRead(IR4))  //0000
  {  
    state = true;    
  }  
  else if (!digitalRead(IR1) && digitalRead(IR2) && digitalRead(IR3)&& !digitalRead(IR4))  //0110
  {  
    state = true;  
  }  
    else if (digitalRead(IR1) && digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4)) //1100
  {  
    state = true;  
  }  
     else if (!digitalRead(IR1) && !digitalRead(IR2) && digitalRead(IR3)&& digitalRead(IR4))  //0011
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3)&& digitalRead(IR4))  //0001
  {  
    state = true;  
  }
      else if (digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4))  //1000
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4))  //0100
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && !digitalRead(IR2) && digitalRead(IR3)&& !digitalRead(IR4))  //0010
  {  
    state = true;  
  }
}
//------------------------------------------------------------------------------------------------------------------
void tooloh2()
{
if (digitalRead(IR1) && digitalRead(IR2) && digitalRead(IR3) && digitalRead(IR4) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);  
    if(count==5) {uragshaa();delay(200);baruun1();delay(430);}
    if(count==7) {uragshaa();delay(200);baruun1();delay(430);}
    if(count==10) {zogs();delay(20000000);}
     }  
 if (!digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3) && !digitalRead(IR4))  //0000
  {  
    state = true;    
  }  
  else if (!digitalRead(IR1) && digitalRead(IR2) && digitalRead(IR3)&& !digitalRead(IR4))  //0110
  {  
    state = true;  
  }  
    else if (digitalRead(IR1) && digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4)) //1100
  {  
    state = true;  
  }  
     else if (!digitalRead(IR1) && !digitalRead(IR2) && digitalRead(IR3)&& digitalRead(IR4))  //0011
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3)&& digitalRead(IR4))  //0001
  {  
    state = true;  
  }
      else if (digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4))  //1000
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4))  //0100
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && !digitalRead(IR2) && digitalRead(IR3)&& !digitalRead(IR4))  //0010
  {  
    state = true;  
  }
}
//----------------------------------------------------------------------------------------------------------------
void tooloh3()
{
if (digitalRead(IR1) && digitalRead(IR2) && digitalRead(IR3) && digitalRead(IR4) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);  
    if(count==5) {uragshaa();delay(200);baruun1();delay(430);}
    if(count==7) {uragshaa();delay(200);baruun1();delay(430);}
    if(count==10) {zogs();delay(20000000);}
     }  
 if (!digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3) && !digitalRead(IR4))  //0000
  {  
    state = true;    
  }  
  else if (!digitalRead(IR1) && digitalRead(IR2) && digitalRead(IR3)&& !digitalRead(IR4))  //0110
  {  
    state = true;  
  }  
    else if (digitalRead(IR1) && digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4)) //1100
  {  
    state = true;  
  }  
     else if (!digitalRead(IR1) && !digitalRead(IR2) && digitalRead(IR3)&& digitalRead(IR4))  //0011
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3)&& digitalRead(IR4))  //0001
  {  
    state = true;  
  }
      else if (digitalRead(IR1) && !digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4))  //1000
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && digitalRead(IR2) && !digitalRead(IR3)&& !digitalRead(IR4))  //0100
  {  
    state = true;  
  }
      else if (!digitalRead(IR1) && !digitalRead(IR2) && digitalRead(IR3)&& !digitalRead(IR4))  //0010
  {  
    state = true;  
  }
}



















void uragshaa()
{
  motor1.setSpeed(h);
  motor1.run(FORWARD);
  motor2.setSpeed(h);
  motor2.run(FORWARD);
}
void hoishoo()
{
  motor1.setSpeed(150);
  motor1.run(BACKWARD);
  motor2.setSpeed(150);
  motor2.run(BACKWARD);
}
void baruun()
{
  motor1.setSpeed(255);
  motor1.run(FORWARD);
  motor2.setSpeed(0);
  motor2.run(FORWARD);
}
void zuun()
{
  motor1.setSpeed(0);
  motor1.run(FORWARD);
  motor2.setSpeed(255);
  motor2.run(FORWARD);
}

void baruun1()
{
  motor1.setSpeed(h);
  motor1.run(FORWARD);
  motor2.setSpeed(h);
  motor2.run(BACKWARD);
}
void zuun1()
{
  motor1.setSpeed(255);
  motor1.run(BACKWARD);
  motor2.setSpeed(255);
  motor2.run(FORWARD);
}
void zogs()
{
  motor1.setSpeed(0);
  motor1.run(RELEASE);
  motor2.setSpeed(0);
  motor2.run(RELEASE);
  }