#include <IRremote.h>
#include <Servo.h>
//define motor pin**
int MotorRight1=5;
int MotorRight2=6;
int MotorLeft1=10;
int MotorLeft2=11;
int counter=0;
const int irReceiverPin = 2; //Infrared recive connect to pin 2
//set detect IRcode**
long IRfront= 0x00FFA25D; //go forward code
long IRback=0x00FF629D; //go back code
long IRturnright=0x00FFC23D; //turn right code
long IRturnleft= 0x00FF02FD; //turn left code
long IRstop=0x00FFE21D; //stop code
long IRcny70=0x00FFA857; //CNY70 automatic move mode
long IRAutorun=0x00FF906F; //ultrasonic detect automatic move mode
long IRturnsmallleft= 0x00FF22DD;
//dedine CNY70 pin***********
const int SensorLeft = 7; //left sensor input
const int SensorMiddle= 4 ; //middle sensor input
const int SensorRight = 3; //right sensor input
int SL; //left sensor status
int SM; //middle sensor stattus
int SR; //right sensor status
IRrecv irrecv(irReceiverPin); // define IRrecv signal
decode_results results; // put decode result in "results"
//define ultrasonic module pin****
int inputPin =13 ; // define ultrasonic module recive signal RX pin
int outputPin =12; // define ultrasonic module echo signal TX pin
int Fspeedd = 0; // distance in front
int Rspeedd = 0; // distance in right
int Lspeedd = 0; // distance in left
int directionn = 0; // forward=8; back=2; left=4; right=6
Servo myservo; // set myservo
int delay_time = 250; // stabilization time of servo motor turn back
int Fgo = 8; // go forward
int Rgo = 6; // turn right
int Lgo = 4; // turn left
int Bgo = 2; // go back
//********************************************************************(SETUP)
void setup()
{
Serial.begin(9600);
pinMode(MotorRight1, OUTPUT); // pin 8 (PWM)
pinMode(MotorRight2, OUTPUT); // pin 9 (PWM)
pinMode(MotorLeft1, OUTPUT); // pin 10 (PWM)
pinMode(MotorLeft2, OUTPUT); // pin 11 (PWM)
irrecv.enableIRIn(); // start infrared encode
pinMode(SensorLeft, INPUT); //define left sensor
pinMode(SensorMiddle, INPUT);//define middle sensor
pinMode(SensorRight, INPUT); //define right sensor
digitalWrite(2,HIGH);
pinMode(inputPin, INPUT); // define ultrasonic recive pin
pinMode(outputPin, OUTPUT); // define ultrasonic echo pin
myservo.attach(9); // deine servo motor pin
}
//******************************************************************(Void)
void advance(int a) // go forward
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
delay(a * 100);
}
void right(int b) //turn right (single wheel)
{
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
delay(b * 100);
}
void left(int c) //turn left(single wheel)
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
delay(c * 100);
}
void turnR(int d) //turn right (double wheels)
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
delay(d * 100);
}
void turnL(int e) //turn left (double wheels)
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
delay(e * 100);
}
void stopp(int f) //stop
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
delay(f * 100);
}
void back(int g) //go back
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);;
delay(g * 100);
}