Engineering and design
* 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();
}
}