Thursday, October 31, 2024

3 мэдрэгчтэй шоо цуглуулах робот код

int ir1=A0; int ir2=A1; int ir3=A2; int count=0;   boolean state = true; int enA = 6;   //motoriin hurd tohiruulah int in1 = 8; int in2 = 7; // Zuun motor

int enB = 11;//motoriin hurd tohiruulah
int in3 = 10;
int in4 = 9;
int t=0;
int f=1;
void setup() {
  Serial.begin(9600);
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  pinMode(ir1,INPUT);
  pinMode(ir2,INPUT);
  pinMode(ir3,INPUT);


}
void loop() {
if(digitalRead(ir1)==t && digitalRead(ir2)==t && digitalRead(ir3)==t){uragshaa();} //bugd tsagaan 1111 bol yav
else if(digitalRead(ir1)==f && digitalRead(ir2)==f && digitalRead(ir3)==f){uragshaa();} //bugd har 0000 bol zogs
else if(digitalRead(ir1)==t && digitalRead(ir2)==f && digitalRead(ir3)==t){uragshaa();} //101 bol chigeerei
else if(digitalRead(ir1)==f && digitalRead(ir2)==t && digitalRead(ir3)==t){baruun();}//011
else if(digitalRead(ir1)==t && digitalRead(ir2)==t && digitalRead(ir3)==f){zuun();}//110
 if (digitalRead(ir1) && digitalRead(ir2) && digitalRead(ir3) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);

if(count==3){zogs();delay(10000);}
   
     }  
   
  if (!digitalRead(ir1)&&!digitalRead(ir2)&&!digitalRead(ir3))   //1111 bugd tsagaan  
  {  
    state = true;  
  delay(100);  
  }  


       }

void uragshaa(){
  analogWrite(enA, 150);  //motor hurd 0-255 hoorond too bichne
  analogWrite(enB, 150);  
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void hoishoo(){
  analogWrite(enA, 250);  //motor hurd 0-255 hoorond too bichne
  analogWrite(enB, 250);  
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}
void zogs(){  
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void baruun(){
  analogWrite(enA, 150);  //motor hurd 0-255 hoorond too bichne
  analogWrite(enB, 150);  
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void zuun(){
  analogWrite(enA, 150);  //motor hurd 0-255 hoorond too bichne
  analogWrite(enB, 150);  
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void baruun1(){
  analogWrite(enA, 150);  //motor hurd 0-255 hoorond too bichne
  analogWrite(enB, 150);  
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}
void zuun1(){
  analogWrite(enA, 150);  //motor hurd 0-255 hoorond too bichne
  analogWrite(enB, 150);  
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void tooloh(){
if (!digitalRead(ir1) && !digitalRead(ir2) && !digitalRead(ir3) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);
   
     }  
   
  if (digitalRead(ir1)&&digitalRead(ir2)&&digitalRead(ir3))   //1111 bugd tsagaan  
  {  
    state = true;  
  delay(100);  
  }  

}

Tuesday, October 29, 2024

IR sensor test

 void setup()

{ Serial.begin(9600);   //Necessary to set up Serial port
}  
void loop()
{ Serial.print(analogRead(0));
Serial.print(' ');
Serial.print(analogRead(1));
Serial.print(' ');
Serial.print(analogRead(2));
Serial.print(' ');
Serial.print(analogRead(3));
Serial.print(' ');
Serial.print(analogRead(4));
Serial.println(' ');
delay(800);              //Set the number to change frequency of readings.        
  }

Saturday, October 26, 2024

Shugam dagadag robot PID

 #include <QTRSensors.h>


QTRSensors qtrrc((unsigned char[]) {A0, A1, A2, A3, A4, A5, A6, A7},  // sensor inputs

                 8, // number of sensors

                 2500, // timeout

                 EMITTER_PIN);  // emitter pin


// Motor pins

const int motor1Pin1 = 9;

const int motor1Pin2 = 10;

const int motor2Pin1 = 11;

const int motor2Pin2 = 12;


// PID constants

float Kp = 0.2;

float Ki = 0.001;

float Kd = 0.1;


float error, lastError, errorSum;


void setup() {

  // Initialize serial communication

  Serial.begin(9600);


  // Initialize QTR sensors

  qtrrc.setTypeRC();


  // Initialize motor pins as outputs

  pinMode(motor1Pin1, OUTPUT);

  pinMode(motor1Pin2, OUTPUT);

  pinMode(motor2Pin1, OUTPUT);

  pinMode(motor2Pin2, OUTPUT);

}


void loop() {

  // Read sensor values

  unsigned int sensorValues[8];

  qtrrc.read(sensorValues);


  // Calculate error (simplified example)

  error = sensorValues[2] - (sensorValues[0] + sensorValues[4]) / 2;


  // Calculate PID output

  float P = Kp * error;

  float I = Ki * errorSum;

  float D = Kd * (error - lastError);

  float output = P + I + D;


  // Control motors

  if (output > 0) {

    // Turn right

    digitalWrite(motor1Pin1, HIGH);

    digitalWrite(motor1Pin2, LOW);

    digitalWrite(motor2Pin1, LOW);

    digitalWrite(motor2Pin2, HIGH);

  } else if (output < 0) {

    // Turn left

    digitalWrite(motor1Pin1, LOW);

    digitalWrite(motor1Pin2, HIGH);

    digitalWrite(motor2Pin1, HIGH);

    digitalWrite(motor2Pin2, LOW);

  } else {

    // Go straight

    digitalWrite(motor1Pin1, HIGH);

    digitalWrite(motor1Pin2, LOW);

    digitalWrite(motor2Pin1, HIGH);

    digitalWrite(motor2Pin2, LOW);

  }


  lastError = error;

  errorSum += error;

}


Shugam tooloh

1 мэдрэгтэй үед
 int ir1=2;  
int count=0;  
 boolean state = true;  
 void setup()  
 {  
  Serial.begin(9600);  
  pinMode(ir1, INPUT);  
 }  
 void loop()  
 {  
  if (!digitalRead(ir1) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);  
     }  
  if (digitalRead(ir1))  
  {  
    state = true;  
    delay(100);  
  }  
 }  




----------------------------------------------------------------------------------
5 мэдрэгтэй үед
 int ir1=2;  
  int ir2=3;
  int ir3=4;
  int ir4=5;
  int ir5=6;
 int count=0;  
 boolean state = true;  
 void setup()  
 {  
  Serial.begin(9600);  
  pinMode(ir1, INPUT);  
   pinMode(ir2, INPUT);  
   pinMode(ir3, INPUT);  
   pinMode(ir4, INPUT);  
   pinMode(ir5, INPUT);  
  }  
 void loop()  
 {  
  if (!digitalRead(ir1) && !digitalRead(ir2) && !digitalRead(ir3) && !digitalRead(ir4) && !digitalRead(ir5) && state){  
    count++;  
    state = false;  
    Serial.print("Count: ");  
    Serial.println(count);  
     }  
  if (digitalRead(ir1)&&digitalRead(ir2)&&digitalRead(ir3)&&digitalRead(ir4)&&digitalRead(ir5))  
  {  
    state = true;  
    delay(100);  
  }  
 }  

ОБЬЕКТ ТООЛОХ

 int irs = 7;

int counter = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(irs,INPUT);
}

void loop()
{
  while(digitalRead(irs)==LOW)
  {
    counter++;
    Serial.print("Count: ");
    Serial.println(counter);
    delay(2000);
  }
}


https://vsa.edu.in/b7-object-counter-using-serial-monitor/