Mostafa zaghloulsarah gamalMohamed MostafaHamada HamzaRokaya Elhakim
Created November 6, 2015 © GPL3+

Maze Runner

It is A simple autonomous Car run throw a Maze to get out of it ,it start from a point then it will find it's way to the out door .

BeginnerWork in progress5,353
Maze Runner

Things used in this project

Hardware components

L298N
×1
Arduino UNO
Arduino UNO
×1
2WD Smart Robot Car Chassis Kit
×1
ultraSonic SR04
×3

Story

Read more

Schematics

Ultrasonics with Arduino UNO

Code

Maze car

C/C++
/*this code created by Mostafa salah zaghloul for سمينا بنفسك Team
 *first trial at 9:55 pm on fri 2/10/2015
 *secound trial at 00:30 am on 5/10/2015
 *third trial at 11pm on 8/10/2015
 *
 *
 */
//motor A
#define en1 9
#define in1 4
#define in2 5
//motor b
#define en2 3
#define in3 6
#define in4 7

int front_trig = A4; 
int front_echo = A5; 

int left_trig = A2;
int left_echo = A3;

int right_trig = A0;
int right_echo = A1;


//distance,time
long front_time, front_dis, right_time, right_dis, left_time, left_dis;

void setup() {
  pinMode(front_trig, OUTPUT); 
  pinMode(front_echo, INPUT);

  pinMode(left_trig, OUTPUT);
  pinMode(left_echo, INPUT);

  pinMode(right_trig, OUTPUT);
  pinMode(right_echo, INPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(en1, OUTPUT);
  pinMode(en2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(front_trig, LOW);  
  delayMicroseconds(2);               
  digitalWrite(front_trig, HIGH); 
  delayMicroseconds(5);               
  digitalWrite(front_trig, LOW);  
  front_time = pulseIn(front_echo, HIGH); 
  front_dis = front_time/ 29 / 2;

  digitalWrite(left_trig, LOW);
  delayMicroseconds(2);
  digitalWrite(left_trig, HIGH);
  delayMicroseconds(5);
  digitalWrite(left_trig, LOW);
  left_time= pulseIn(left_echo, HIGH);
  left_dis= left_time / 29 / 2;

  digitalWrite(right_trig, LOW);
  delayMicroseconds(2);
  digitalWrite(right_trig, HIGH);
  delayMicroseconds(5);
  digitalWrite(right_trig, LOW);
  right_time = pulseIn(right_echo, HIGH);
  right_dis = right_time / 29 / 2;
  Serial.print(right_dis);
  Serial.print(":");
  Serial.print(front_dis);
  Serial.print(":");
  Serial.println(left_dis);
  
  
 if (right_dis <= 6&& left_dis <= 6&& front_dis>5){
   forward();
  }
  else if(right_dis > 6&&left_dis <= 6&& front_dis>5){
    right();
    
  }else if (left_dis >6&&right_dis <= 6&& front_dis>5){
    left();
   }


}
void right() {
  analogWrite(en1,255);
  analogWrite(en2,255);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void Stop () {
  analogWrite(en1, 0);
  analogWrite(en2, 0);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void left() {
  analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void forward() {
  analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void back(){

   analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

mazecar

C/C++
/*this code created by Mostafa salah zaghloul for سمينا بنفسك Team
 *first trial at 9:55 pm on fri 2/10/2015
 *secound trial at 00:30 am on 5/10/2015
 *third trial at 11pm on 8/10/2015
 *
 *
 */
//motor A
#define en1 9
#define in1 4
#define in2 5
//motor b
#define en2 3
#define in3 6
#define in4 7

int front_trig = A4; 
int front_echo = A5; 

int left_trig = A2;
int left_echo = A3;

int right_trig = A0;
int right_echo = A1;


//distance,time
long front_time, front_dis, right_time, right_dis, left_time, left_dis;

void setup() {
  pinMode(front_trig, OUTPUT); 
  pinMode(front_echo, INPUT);

  pinMode(left_trig, OUTPUT);
  pinMode(left_echo, INPUT);

  pinMode(right_trig, OUTPUT);
  pinMode(right_echo, INPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(en1, OUTPUT);
  pinMode(en2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(front_trig, LOW);  
  delayMicroseconds(2);               
  digitalWrite(front_trig, HIGH); 
  delayMicroseconds(5);               
  digitalWrite(front_trig, LOW);  
  front_time = pulseIn(front_echo, HIGH); 
  front_dis = front_time/ 29 / 2;

  digitalWrite(left_trig, LOW);
  delayMicroseconds(2);
  digitalWrite(left_trig, HIGH);
  delayMicroseconds(5);
  digitalWrite(left_trig, LOW);
  left_time= pulseIn(left_echo, HIGH);
  left_dis= left_time / 29 / 2;

  digitalWrite(right_trig, LOW);
  delayMicroseconds(2);
  digitalWrite(right_trig, HIGH);
  delayMicroseconds(5);
  digitalWrite(right_trig, LOW);
  right_time = pulseIn(right_echo, HIGH);
  right_dis = right_time / 29 / 2;
  Serial.print(right_dis);
  Serial.print(":");
  Serial.print(front_dis);
  Serial.print(":");
  Serial.println(left_dis);
  
  
 if (right_dis <= 6&& left_dis <= 6&& front_dis>5){
   forward();
  }
  else if(right_dis > 6&&left_dis <= 6&& front_dis>5){
    right();
    
  }else if (left_dis >6&&right_dis <= 6&& front_dis>5){
    left();
   }


}
void right() {
  analogWrite(en1,255);
  analogWrite(en2,255);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void Stop () {
  analogWrite(en1, 0);
  analogWrite(en2, 0);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void left() {
  analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void forward() {
  analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void back(){

   analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

Untitled file

Arduino
/*this code created by Mostafa salah zaghloul for سمينا بنفسك Team
 *first trial at 9:55 pm on fri 2/10/2015
 *secound trial at 00:30 am on 5/10/2015
 *third trial at 11pm on 8/10/2015
 *
 *
 */
//motor A
#define en1 9
#define in1 4
#define in2 5
//motor b
#define en2 3
#define in3 6
#define in4 7

int front_trig = A4; 
int front_echo = A5; 

int left_trig = A2;
int left_echo = A3;

int right_trig = A0;
int right_echo = A1;


//distance,time
long front_time, front_dis, right_time, right_dis, left_time, left_dis;

void setup() {
  pinMode(front_trig, OUTPUT); 
  pinMode(front_echo, INPUT);

  pinMode(left_trig, OUTPUT);
  pinMode(left_echo, INPUT);

  pinMode(right_trig, OUTPUT);
  pinMode(right_echo, INPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(en1, OUTPUT);
  pinMode(en2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(front_trig, LOW);  
  delayMicroseconds(2);               
  digitalWrite(front_trig, HIGH); 
  delayMicroseconds(5);               
  digitalWrite(front_trig, LOW);  
  front_time = pulseIn(front_echo, HIGH); 
  front_dis = front_time/ 29 / 2;

  digitalWrite(left_trig, LOW);
  delayMicroseconds(2);
  digitalWrite(left_trig, HIGH);
  delayMicroseconds(5);
  digitalWrite(left_trig, LOW);
  left_time= pulseIn(left_echo, HIGH);
  left_dis= left_time / 29 / 2;

  digitalWrite(right_trig, LOW);
  delayMicroseconds(2);
  digitalWrite(right_trig, HIGH);
  delayMicroseconds(5);
  digitalWrite(right_trig, LOW);
  right_time = pulseIn(right_echo, HIGH);
  right_dis = right_time / 29 / 2;
  Serial.print(right_dis);
  Serial.print(":");
  Serial.print(front_dis);
  Serial.print(":");
  Serial.println(left_dis);
  
  
 if (right_dis <= 6&& left_dis <= 6&& front_dis>5){
   forward();
  }
  else if(right_dis > 6&&left_dis <= 6&& front_dis>5){
    right();
    
  }else if (left_dis >6&&right_dis <= 6&& front_dis>5){
    left();
   }


}
void right() {
  analogWrite(en1,255);
  analogWrite(en2,255);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void Stop () {
  analogWrite(en1, 0);
  analogWrite(en2, 0);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void left() {
  analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void forward() {
  analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void back(){

   analogWrite(en1, 255);
  analogWrite(en2, 255);
  digitalWrite(in1, LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

maze

Credits

Mostafa zaghloul
6 projects • 19 followers
mostafa zaghloul a communication engineer student at "Egypt's Higher Institute Mansoura"
sarah gamal
4 projects • 10 followers
Mohamed Mostafa
4 projects • 9 followers
Mini Engineer
Hamada Hamza
4 projects • 7 followers
عضو فى تيم صغنن خالص تقدر تقول بنستفاد من بعض
Rokaya Elhakim
3 projects • 3 followers

Comments