0% found this document useful (0 votes)
11 views

void loop

Uploaded by

sunilkrdas549
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

void loop

Uploaded by

sunilkrdas549
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

void loop() {

float duration, distance;


digitalWrite(IR_TRIG, HIGH);
delay(10);
digitalWrite(IR_TRIG, LOW);

duration = pulseIn(IR_ECHO, HIGH);


distance = ((float)(340 * duration) / 10000) / 2;
Serial.print("\nDIstance : ");
Serial.println(distance);

if(distance < 20) { //sense obstacle (20cm)


Serial.println("stop");
stop(); //stop(3sec)
}else{ // no obstacle
Serial.println("forward");
forward();
}
}
void forward(){
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
}
void backward(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
delay(500);
}
void left(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
delay(1000);
}
void right(){
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
delay(1000);
}
void stop(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, LOW);
delay(3000);
}

#include <SoftwareSerial.h>

#define LEFT_A1 4

#define LEFT_B1 5

#define RIGHT_A2 6

#define RIGHT_B2 7

#define IR_TRIG 9

#define IR_ECHO 8

void setup() {

Serial.begin(9600);

pinMode(LEFT_A1, OUTPUT);

pinMode(RIGHT_A2, OUTPUT);

pinMode(LEFT_B1, OUTPUT);

pinMode(RIGHT_B2, OUTPUT);
pinMode(IR_TRIG, OUTPUT);

pinMode(IR_ECHO, INPUT);

void loop() {

float duration, distance;

digitalWrite(IR_TRIG, HIGH);

delay(10);

digitalWrite(IR_TRIG, LOW);

duration = pulseIn(IR_ECHO, HIGH);

distance = ((float)(340 * duration) / 10000) / 2;

Serial.print("\nDistance : ");

Serial.println(distance);

int sum = 0;

if(distance < 20) {

Serial.println("stop");

stop();

sum++ ;

while (sum > 10) {

Serial.println("backward");

backward ();
Serial.println("left");

left ();

Serial.println("forwardi");

forwardi ();

Serial.println("right");

right ();

Serial.println("forwardi");

forwardi ();

Serial.println("forwardi");

forwardi ();

Serial.println("right");

right ();

Serial.println("forwardi");

forwardi ();

Serial.println("left");

left ();

Serial.println("forward");

forward();

}else {

Serial.println("forward");

forward();

void forward(){

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);

void forwardi (){

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

delay (4000);

void backward(){

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, HIGH);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, HIGH);

delay(1000);

void left(){

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, HIGH);

digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

delay(1000);

void right(){

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, HIGH);

delay(1000);
}

void stop(){

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, LOW);

delay(3000);

#include <SoftwareSerial.h>

#define LEFT_A1 4

#define LEFT_B1 5

#define RIGHT_A2 6

#define RIGHT_B2 7

#define IR_TRIG 9

#define IR_ECHO 8

int currState = 0;

int nextState = 1;

unsigned long int forwardStartTime;

unsigned long int stopStartTime;

unsigned long int backStartTime;


unsigned long int leftStartTime;

unsigned long int totalForwardTime = 0;

void setup() {

Serial.begin(9600);

pinMode(LEFT_A1, OUTPUT);

pinMode(RIGHT_A2, OUTPUT);

pinMode(LEFT_B1, OUTPUT);

pinMode(RIGHT_B2, OUTPUT);

pinMode(IR_TRIG, OUTPUT);

pinMode(IR_ECHO, INPUT);

void loop() {

float duration, distance;

digitalWrite(IR_TRIG, HIGH);

delay(10);

digitalWrite(IR_TRIG, LOW);

duration = pulseIn(IR_ECHO, HIGH);

distance = ((float)(340 * duration) / 10000) / 2;


distance = 10;

Serial.print("\nDistance : ");

Serial.println(distance);

/*

STATE=0 1. Drive 10m ahead

STATE=1 2. If the ultrasonic sensor detects obstacle 30cm front, the robot stops.

STATE=0 3. If the obstacle is removed, it continues to move

if the obstacle is not removed for 1 minute, it moves but changes path.

STATE=2 The changed path is following: Move backward by 30 cm.

STATE=3 Drive with semi-circle of D=2m to to the left to avoid obstacle.

STATE4 After finishing the 10m straight to front, it ends.

*/

/* State Trnsitions

0 --> 0 keep moving forward

0 --> 1 obstacle detected 30cm

0 --> 4 10 meters achieved

1 --> 0 obstacle removed

1 --> 1 Waiting

1 --> 2 1 minute elapse Change path

2 --> 2 Still moving backward

2 --> 3 backward or 30 cm achieved

3 --> 3 turning to the left

3 --> 0 2m achieved
4 --> 4 Stop

*/

int prevState = currState;

currState = nextState;

if (currState == 0) {

if (distance <= 30) {

nextState = 1;

} else if (prevState != currState) { // just started

forward();

forwardStartTime = millis();

} else { // keep going forward

unsigned long int timeNow = millis();

totalForwardTime = totalForwardTime + timeNow - forwardStartTime;

forwardStartTime = timeNow;

Serial.print("forwardStartTime:");

Serial.print(forwardStartTime);

if (totalForwardTime >= 10000) { //10 meters achieved

nextState = 4;

} else if (currState == 1) {

if (distance > 30) { // obstacle removed

nextState = 0;

} else if (prevState != currState) { // just stoped

stop();

stopStartTime = millis();
} else if (millis() - stopStartTime > 60000) { //60 * 1000ms = 1 minute elapse Change path

nextState = 2;

} else if (currState == 2) {

if (prevState != currState) { // start moving backward

backward();

backStartTime = millis();

} else if (millis() - backStartTime > 3000) { //back 30 cm achieved

nextState = 3;

} else if (currState == 3) {

if (prevState != currState) { // start turning left

left();

leftStartTime = millis();

} else if (millis() - leftStartTime > 20000) { //left 2m achieved

nextState = 0;

} else if (currState == 4) { // Stop

if (prevState != currState) { // start turning left

stop();

while (true) {

void forward() {

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

void backward() {

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, HIGH);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, HIGH);

void left() {

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, HIGH);

digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

void right() {

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, HIGH);

void stop() {

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, LOW);

#include <SoftwareSerial.h>
#define LEFT_A1 4

#define LEFT_B1 5

#define RIGHT_A2 6

#define RIGHT_B2 7

#define IR_TRIG 9

#define IR_ECHO 8

void setup() {

Serial.begin(9600);

pinMode(LEFT_A1, OUTPUT);

pinMode(RIGHT_A2, OUTPUT);

pinMode(LEFT_B1, OUTPUT);

pinMode(RIGHT_B2, OUTPUT);

pinMode(IR_TRIG, OUTPUT);

pinMode(IR_ECHO, INPUT);

void loop() {

float duration, distance;

digitalWrite(IR_TRIG, HIGH);

delay(10);
digitalWrite(IR_TRIG, LOW);

duration = pulseIn(IR_ECHO, HIGH);

distance = ((float)(340 * duration) / 10000) / 2;

Serial.print("\nDistance : ");

Serial.println(distance);

int sum = 0;

while(distance < 20) {

Serial.println("stop");

stop();

sum++ ;

Serial.println(sum);

float duration, distance;

digitalWrite(IR_TRIG, HIGH);

delay(10);

digitalWrite(IR_TRIG, LOW);

duration = pulseIn(IR_ECHO, HIGH);

distance = ((float)(340 * duration) / 10000) / 2;

Serial.print("\nDistance : ");

Serial.println(distance);

if(distance >= 20){

Serial.println("forward");
forward();}

if(distance >= 20) {

break;

if(sum > 9) {

Serial.println("backward");

backward ();

Serial.println("left");

left ();

Serial.println("forwardi");

forwardi ();

Serial.println("right");

right ();

Serial.println("forwardi");

forwardi ();

Serial.println("forwardi");

forwardi ();

Serial.println("right");

right ();

Serial.println("forwardi");

forwardi ();

Serial.println("left");

left ();

Serial.println("forward");

forward();

sum = 0;

}
}

if(distance >= 20){

Serial.println("forward");

forward();}

void forward(){

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

void forwardi (){

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

delay (2000);

void backward(){

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, HIGH);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, HIGH);

delay(1000);
}

void left(){

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, HIGH);

digitalWrite(RIGHT_A2, HIGH);

digitalWrite(RIGHT_B2, LOW);

delay(500);

void right(){

digitalWrite(LEFT_A1, HIGH);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, HIGH);

delay(500);

void stop(){

digitalWrite(LEFT_A1, LOW);

digitalWrite(LEFT_B1, LOW);

digitalWrite(RIGHT_A2, LOW);

digitalWrite(RIGHT_B2, LOW);

delay(3000);

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy