ภาพวงจรการต่อสาย หุ่นยนต์ส่งของตามจุด

int ML=21;//ปริมาณการหมุนซ้าย 
int MR=19;//ปริมาณการหมุนขวา
int MUT=20;//ปริมาณการหมุนกลับ
////////////////////////////
int DL=5;//นับรอรับของ
//////////////////////////////////////////////////////
//ต่อจากนี้ห้ามปรับ
int cc=0;
//////////////////////////////////////////////////////
const int analogInPin0 = A0; ///เซ็นเซอร์มือคีบ
const int analogInPin1 = A1; //เซ็นเซอร์แทรคเส้นต่อOUT1
const int analogInPin2 = A2; //เซ็นเซอร์แทรคเส้นต่อOUT2
const int analogInPin3 = A3; //เซ็นเซอร์แทรคเส้นต่อOUT3
const int analogInPin4 = A4; //เซ็นเซอร์แทรคเส้นต่อOUT4
const int analogInPin5 = A5; //เซ็นเซอร์แทรคเส้นต่อOUT5
int sensorValue0 = 0;
int sensorValue1 = 0;
int sensorValue2 = 0;
int sensorValue3 = 0;
int sensorValue4 = 0;
int sensorValue5 = 0;
////////////////////
const int BZ =4;
const int inB1 =12;///////มอเตอร์
const int inA1 =13;//////มอเตอร์
const int PWB  =10;//////มอเตอร์
const int PWA  =11;///////มอเตอร์
int Step=0;///ขั้นตอนการทำงาน
int ps; 
int pro=0;
const int buttonPin1 = 2; 
const int buttonPin2 = 3; 
const int buttonPin3 = 5; 
const int buttonPin4 = 6; 
const int buttonPin5 = 7; 
int buttonState1 = 0; 
int buttonState2 = 0; 
int buttonState3 = 0; 
int buttonState4 = 0; 
int buttonState5 = 0; 
void setup() 
{    
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(buttonPin5, INPUT);
//Serial.begin(9600);
 pinMode(BZ , OUTPUT);
 pinMode(inA1 , OUTPUT);
 pinMode(PWA , OUTPUT);
 pinMode(inB1 , OUTPUT);
 pinMode(PWB , OUTPUT);
 digitalWrite(BZ ,HIGH);
delay(100);
digitalWrite(BZ , LOW); 
delay(100);
digitalWrite(BZ ,HIGH);
delay(100);
digitalWrite(BZ , LOW); 
delay(100);
}
void loop() 
{
sensorValue0 = analogRead(analogInPin0);
sensorValue1 = analogRead(analogInPin1);
sensorValue2 = analogRead(analogInPin2);
sensorValue3 = analogRead(analogInPin3);
sensorValue4 = analogRead(analogInPin4);
sensorValue5 = analogRead(analogInPin5);
//  Serial.print("sensor = ");
//  Serial.println(sensorValue1);
 buttonState1 = digitalRead(buttonPin1);
 buttonState2 = digitalRead(buttonPin2);
 buttonState3 = digitalRead(buttonPin3);
 buttonState4 = digitalRead(buttonPin4);
 buttonState5 = digitalRead(buttonPin5);
 
if (buttonState1 == LOW) 
{
digitalWrite(BZ ,HIGH);
delay(1000);
digitalWrite(BZ , LOW); 
Step=1;
pro=1;
  }
if (buttonState2 == LOW) 
{
digitalWrite(BZ ,HIGH);
delay(1000);
digitalWrite(BZ , LOW); 
Step=1;
pro=2;
  }
  if (buttonState3 == LOW) 
{
digitalWrite(BZ ,HIGH);
delay(1000);
digitalWrite(BZ , LOW); 
Step=1;
pro=3;
  }
  if (buttonState4 == LOW) 
{
digitalWrite(BZ ,HIGH);
delay(1000);
digitalWrite(BZ , LOW); 
Step=1;
pro=4;
  }
  if (buttonState5 == LOW) 
{
digitalWrite(BZ ,HIGH);
delay(1000);
digitalWrite(BZ , LOW); 
Step=1;
pro=5;
  }
if(sensorValue0<=500&&Step==0)
{
digitalWrite(BZ ,HIGH);
delay(1000);
digitalWrite(BZ , LOW); 
delay(1000);
Step=1;
pro=6;
}
 
else if(pro==1)
{
 pro1(); 
}
else if(pro==2)
{
 pro2(); 
}
else if(pro==3)
{
 pro3(); 
}
else if(pro==4)
{
 pro4(); 
}
else if(pro==5)
{
 pro5(); 
}
else if(pro==6)
{
 pro6(); 
}
else
{
  Robot_STOP();
digitalWrite(BZ , LOW);  
}
////////////////////////////////////////////////////
}//loop
////////////////////////////////////////////////
 
 
void Robot_GO()//เดินหน้า
{
digitalWrite(inA1 , HIGH);///lowหมุนกลับด้าน
digitalWrite(PWA ,HIGH);//////lowหยุด
digitalWrite(inB1 , HIGH);///lowหมุนกลับด้าน
digitalWrite(PWB ,HIGH); //////lowหยุด
 delay(10);
digitalWrite(inA1 , LOW);
digitalWrite(PWA ,LOW);///0-255
digitalWrite(inB1 , LOW);
digitalWrite(PWB ,LOW); //0-255
 delay(30);
}
//////////////////////////////////////////////////
void Robot_BACK()//ถอยหลัง
{
digitalWrite(inA1 , LOW);///lowหมุนกลับด้าน
digitalWrite(PWA ,HIGH);//////lowหยุด
digitalWrite(inB1 , LOW);///lowหมุนกลับด้าน
digitalWrite(PWB ,HIGH); //////lowหยุด
    delay(10);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(20);
}
//////////////////////////////////////////////////
void Robot_RIGH()//ซ้าย
{
digitalWrite(inA1 , HIGH);
digitalWrite(PWA ,HIGH);///
digitalWrite(inB1 , LOW);//ซ้าย
digitalWrite(PWB ,HIGH); //0-255
  delay(10);
digitalWrite(inA1 , LOW);
digitalWrite(PWA ,LOW);///0-255
digitalWrite(inB1 , LOW);
digitalWrite(PWB ,LOW); //0-255
  delay(20);
}
////////////////////////////////////////////
void Robot_LEFT()//ซ้าย
{
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,HIGH);///0-255
 digitalWrite(inB1 , HIGH);
 digitalWrite(PWB ,HIGH); //0-255
    delay(10);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(20);
}
void Robot_STOP()//หยุด
{
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
}
 //////////////////////////////////////////
 
void LL90()//หมุนซ้าย
{
  if(cc==0)
  {
  for (ps = 0; ps <= ML; ps += 1)
  {
  digitalWrite(inA1 , LOW);
  digitalWrite(PWA ,HIGH);///0-255
  digitalWrite(inB1 , HIGH);
  digitalWrite(PWB ,HIGH); //0-255
    delay(15);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(30); 
  } 
  cc=1;
  }
else if(sensorValue3<500||sensorValue4<500||sensorValue5<500)
{
digitalWrite(BZ ,HIGH);
delay(200);
digitalWrite(BZ , LOW); 
delay(10);
   Step++;
   cc=0;  
}
else 
{
  digitalWrite(inA1 , LOW);
  digitalWrite(PWA ,HIGH);///0-255
  digitalWrite(inB1 , HIGH);
  digitalWrite(PWB ,HIGH); //0-255
    delay(20);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(200);  
  
}
}
 //////////////////////////////////////////////////////////
void RR90()//หมุนขวา
{
if(cc==0)
  {
    for (ps = 0; ps <= MR; ps += 1)
  {
  digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);//ซ้าย
   digitalWrite(PWB ,HIGH); //0-255
     delay(15);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(30); 
  }
  cc=1;
  }
else if(sensorValue1<500||sensorValue2<500||sensorValue3<500)
{  
digitalWrite(BZ ,HIGH);
delay(200);
digitalWrite(BZ , LOW); 
delay(10);
   Step++;
   cc=0;
}
else
{
 digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);//ซ้าย
   digitalWrite(PWB ,HIGH); //0-255
delay(20);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(200);  
}
}
 ///////////////////////////////////////////////////////////////
void UT()//หมุนกลับ//////////////////////////////////--------------------------------------------------
{
 if(cc==0)
 { 
    for (ps = 0; ps <= MUT; ps += 1)
  {
  digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);//ซ้าย
   digitalWrite(PWB ,HIGH); //0-255
     delay(25);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(50); 
  }
  cc=1;
 }
  
else if(sensorValue1<500||sensorValue2<500||sensorValue3<500)
{
for (ps = 0; ps <=DL; ps += 1)//////รอนับจำนวน
  {  
digitalWrite(BZ ,HIGH);  
delay(1000);
digitalWrite(BZ ,LOW);
delay(1000);
  }
Step++; 
cc=0; 
}
else
{
 digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);//ซ้าย
   digitalWrite(PWB ,HIGH); //0-255
delay(20);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(200); 
}
  
}
 ///////////////////////////////////////////////////////////////
void UTR()//หมุนกลับจบ
{
 if(cc==0)
 { 
    for (ps = 0; ps <= MUT; ps += 1)
  {
  digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);//ซ้าย
   digitalWrite(PWB ,HIGH); //0-255
     delay(25);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(50); 
  }
  cc=1;
 }
  
else if(sensorValue1<500||sensorValue2<500||sensorValue3<500)
{
for (ps = 0; ps <= 2; ps += 1)//////รอนับจำนวน
  {  
digitalWrite(BZ ,HIGH);  
delay(1000);
digitalWrite(BZ ,LOW);
delay(1000);
cc=0;
  }
Step++;  
}
else
{
 digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);//ซ้าย
   digitalWrite(PWB ,HIGH); //0-255
delay(20);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
  delay(200); 
}
  
}
 ///////////////////////////////////////////////////////////////
void LINE()//เดินตามเส้น
{
 if(sensorValue2<500&&sensorValue4<500||sensorValue1<500&&sensorValue5<500||sensorValue1<500&&sensorValue2<500||sensorValue4<500&&sensorValue5<500)//เส้นดำ
 {
    Robot_GO();  
    delay(100);
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,LOW);///0-255
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,LOW); //0-255
 
digitalWrite(BZ ,HIGH);  
delay(100);
digitalWrite(BZ ,LOW);
delay(100);
  Step++;//นับ
} 
else if(sensorValue1<500||sensorValue2<500)//ซ้าย
{
Robot_LEFT();
}
else if(sensorValue5<500||sensorValue4<500)//ขวา
{
Robot_RIGH(); 
}
 
else
{
Robot_GO();  
}
 
}
////////////////////////////////////////////// 
//////////////////////////////////////////////////////
//////////////////////////////////////////
void pro1()
{
 if(Step==1)
{
LINE();
}
 else if(Step==2)
{
RR90();
}
 else if(Step==3)
{
LINE();
}
 else if(Step==4)
{
UT();
}
 else if(Step==5)
{
LINE();
}
 else if(Step==6)
{
LL90();
}
 else if(Step==7)
{
LINE(); 
 }
 else if(Step==8)
{
UTR();
}
else
{
  Robot_STOP();
  Step=0;
  pro=0;
digitalWrite(BZ , LOW);  
}
}
void pro2()
{
 if(Step==1)
{
LINE();
}
 else if(Step==2)
{
LINE();
}
 else if(Step==3)
{
RR90();
}
 else if(Step==4)
{
LINE();
}
 else if(Step==5)
{
UT();
}
 else if(Step==6)
{
LINE();
}
 else if(Step==7)
{
LL90();
}
 else if(Step==8)
{
LINE();
}
 else if(Step==9)
{
LINE();
}
 else if(Step==10)
{
UTR();
}
else
{
  Robot_STOP();
  Step=0;
  pro=0;
digitalWrite(BZ , LOW);  
}
}
////////////////////////////////
void pro3()
{
 if(Step==1)
{
LINE();
}
 else if(Step==2)
{
LINE();
}
 else if(Step==3)
{
LINE();
}
 else if(Step==4)
{
RR90();
}
 else if(Step==5)
{
LINE();
}
 else if(Step==6)
{
UT();
}
 else if(Step==7)
{
LINE();
}
 else if(Step==8)
{
LL90();
}
 else if(Step==9)
{
LINE();
}
 else if(Step==10)
{
LINE();
}
 else if(Step==11)
{
LINE();
}
 else if(Step==12)
{
UTR();
}
else
{
  Robot_STOP();
  Step=0;
  pro=0;
digitalWrite(BZ , LOW);  
}
}
 
 
 
/////
////////////////////////////////
void pro4()
{
 if(Step==1)
{
LINE();
}
 else if(Step==2)
{
LINE();
}
 else if(Step==3)
{
LINE();
}
 else if(Step==4)
{
LINE();
}
 else if(Step==5)
{
RR90();
}
 else if(Step==6)
{
LINE();
}
 else if(Step==7)
{
UT();
}
 else if(Step==8)
{
LINE();
}
 else if(Step==9)
{
LL90();
}
 else if(Step==10)
{
LINE();
}
 else if(Step==11)
{
LINE();
}
 else if(Step==12)
{
LINE();
}
 else if(Step==13)
{
LINE();
}
 else if(Step==14)
{
UTR();
}
else
{
  Robot_STOP();
  Step=0;
  pro=0;
digitalWrite(BZ , LOW);  
}
}
 
//////////////////////////////// pro5()
void pro5()
{
 if(Step==1)
{
LINE();
}
 else if(Step==2)
{
LINE();
}
 else if(Step==3)
{
LINE();
}
 else if(Step==4)
{
LINE();
}
 else if(Step==5)
{
LINE();
}
 else if(Step==6)
{
RR90();
}
 else if(Step==7)
{
LINE();
}
 else if(Step==8)
{
UT();
}
 else if(Step==9)
{
LINE();
}
 else if(Step==10)
{
LL90();
}
 else if(Step==11)
{
LINE();
}
 else if(Step==12)
{
LINE();
}
 else if(Step==13)
{
LINE();
}
 else if(Step==14)
{
LINE();
}
 else if(Step==15)
{
LINE();
}
 else if(Step==16)
{
UTR();
}
else
{
  Robot_STOP();
  Step=0;
  pro=0;
digitalWrite(BZ , LOW);  
}
}
 
//////////////////////////////// pro6()
void pro6()
{
 if(Step==1)
{
LINE();
}
 else if(Step==2)
{
LINE();
}
 else if(Step==3)
{
LINE();
}
 else if(Step==4)
{
LINE();
}
 else if(Step==5)
{
LINE();
}
 else if(Step==6)
{
LINE();
}
 else if(Step==7)
{
RR90();
}
 else if(Step==8)
{
LINE();
}
 else if(Step==9)
{
UT();
}
 else if(Step==10)
{
LINE();
}
 else if(Step==11)
{
LL90();
}
 else if(Step==12)
{
LINE();
}
 else if(Step==13)
{
LINE();
}
 else if(Step==14)
{
LINE();
}
 else if(Step==15)
{
LINE();
}
 else if(Step==16)
{
LINE();
}
 else if(Step==17)
{
LINE();
}
 else if(Step==18)
{
UTR();
}
else
{
  Robot_STOP();
  Step=0;
  pro=0;
digitalWrite(BZ , LOW);  
}
}