Engineering and design

profileaajmi0
CodeforIndividualRobottask.docx

* Code for Individual Robot task #2 - "Object Avoidance"

Write your descriptions for each section of code, explaining what each

program step or section does. Identify Subroutines and Sun-functions in the code

as needed. Also write a separate algorithm for the code, which details

the sub-tasks in the program*/

//

int Echo = A4;

int Trig = A5;

//

int in1 = 7;

int in2 = 8;

int in3 = 9;

int in4 = 11;

int ENA = 5;

int ENB = 6;

int ABS = 150;

//

int middleDistance = 0;

//

void _mForward()

{

analogWrite(ENA,ABS);

analogWrite(ENB,ABS);

digitalWrite(in1,HIGH);

digitalWrite(in2,LOW);

digitalWrite(in3,LOW);

digitalWrite(in4,HIGH);

Serial.println("go forward!");

}

//

void _mBack()

{

analogWrite(ENA,ABS);

analogWrite(ENB,ABS);

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH);

digitalWrite(in3,HIGH);

digitalWrite(in4,LOW);

Serial.println("go back!");

}

//

void _mleft()

{

analogWrite(ENA,ABS);

analogWrite(ENB,ABS);

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH);

digitalWrite(in3,LOW);

digitalWrite(in4,HIGH);

Serial.println("go left!");

}

//

void _mright()

{

analogWrite(ENA,ABS);

analogWrite(ENB,ABS);

digitalWrite(in1,HIGH);

digitalWrite(in2,LOW);

digitalWrite(in3,HIGH);

digitalWrite(in4,LOW);

Serial.println("go right!");

}

//

void _mStop()

{

digitalWrite(ENA,LOW);

digitalWrite(ENB,LOW);

Serial.println("Stop!");

}

//

int Distance_test()

{

digitalWrite(Trig, LOW);

delayMicroseconds(2);

digitalWrite(Trig, HIGH);

delayMicroseconds(20);

digitalWrite(Trig, LOW);

float Fdistance = pulseIn(Echo, HIGH);

Fdistance= Fdistance/148; // "in" = 148, "cm" 58

return (int)Fdistance;

}

//

void setup()

{

//

pinMode(Echo, INPUT);

pinMode(Trig, OUTPUT);

//

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

pinMode(ENA, OUTPUT);

pinMode(ENB, OUTPUT);

//

_mStop();

//

Serial.begin(9600);

}

void loop()

{

//

middleDistance = Distance_test();

Serial.print("middleDistance = ");

Serial.println(middleDistance);

if(middleDistance <= 20) //

{

_mStop();

delay(1000); //

/*Choose an avoidance move here. Choose from

left turn, right turn, or go backwards.

For the left turn or the right turn remember to

include a delay time for a 90-degree turn.

After your avoidance move, go 10cm in the new

direction, and stop */

delay(600); //

}

else

{

_mForward();

}

}