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

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);
}
}