Objective: To make the real program for the land mower
Analysis/Discussion: for this week, I create the program for my product using Arduino.
#define trigPin 13
#define echoPin 12
#define led 8
#define led2 9
#define led3 100
#define led4 11
int i=0;// motor one
int enA = 6;
int in1 = 5;
int in2 = 4;
// motor two
int enB = 3;
int in3 = 2;
int in4 = 7;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT); // indicates no obstacle (>40cm)
pinMode(led2, OUTPUT); // indicates obstacle present (<40cm)
// pinMode(led3, OUTPUT); //dummy utk turn right
// pinMode(led4, OUTPUT); //dummy utk turn left
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop()
{
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
Serial.print("I = ");
Serial.println(i);
Serial.println();
if (distance > 40 && (i==0 || i==1)) // indicates no obstacle (>40cm)
{
digitalWrite(led, HIGH); // When the Red condition is met, the Green LED should turn off
digitalWrite(led2, LOW);
// digitalWrite(led3, HIGH);
// digitalWrite(led4, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 255);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 255);
}
else if (distance < 40 && i == 1)
{
digitalWrite(led, LOW); // LED 1(no obstacle) OFF
digitalWrite(led2, HIGH); // LED 2(obstacle) ON
//Make 180 turn to right
// digitalWrite(led3, HIGH);
// digitalWrite(led4, LOW); //dummy utk turn left
motorLeft();
delay(6350); //delay kne buat bg ckup masa utk motor buat pusingan
i = 0;
}
else if (distance < 40 && i == 0)
{
digitalWrite(led, LOW); // LED 1(no obstacle) OFF
digitalWrite(led2, HIGH); // LED 2(obstacle) ON
//Make 180 turn to left
// digitalWrite(led3, LOW);
// digitalWrite(led4, HIGH); //dummy utk turn left
motorRight();
delay(6350); //delay kne buat bg ckup masa utk motor buat pusingan
i = 1;
}
delay(10);
}
void motorLeft ()
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 255);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enB, 255);
}
void motorRight ()
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 255);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 255);
}
Conclusion: as a conclusion, this week i focus for the program and the program its already test in hardware also working well but not calibrate in prototype.
Analysis/Discussion: for this week, I create the program for my product using Arduino.
#define trigPin 13
#define echoPin 12
#define led 8
#define led2 9
#define led3 100
#define led4 11
int i=0;// motor one
int enA = 6;
int in1 = 5;
int in2 = 4;
// motor two
int enB = 3;
int in3 = 2;
int in4 = 7;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT); // indicates no obstacle (>40cm)
pinMode(led2, OUTPUT); // indicates obstacle present (<40cm)
// pinMode(led3, OUTPUT); //dummy utk turn right
// pinMode(led4, OUTPUT); //dummy utk turn left
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop()
{
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
Serial.print("I = ");
Serial.println(i);
Serial.println();
if (distance > 40 && (i==0 || i==1)) // indicates no obstacle (>40cm)
{
digitalWrite(led, HIGH); // When the Red condition is met, the Green LED should turn off
digitalWrite(led2, LOW);
// digitalWrite(led3, HIGH);
// digitalWrite(led4, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 255);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 255);
}
else if (distance < 40 && i == 1)
{
digitalWrite(led, LOW); // LED 1(no obstacle) OFF
digitalWrite(led2, HIGH); // LED 2(obstacle) ON
//Make 180 turn to right
// digitalWrite(led3, HIGH);
// digitalWrite(led4, LOW); //dummy utk turn left
motorLeft();
delay(6350); //delay kne buat bg ckup masa utk motor buat pusingan
i = 0;
}
else if (distance < 40 && i == 0)
{
digitalWrite(led, LOW); // LED 1(no obstacle) OFF
digitalWrite(led2, HIGH); // LED 2(obstacle) ON
//Make 180 turn to left
// digitalWrite(led3, LOW);
// digitalWrite(led4, HIGH); //dummy utk turn left
motorRight();
delay(6350); //delay kne buat bg ckup masa utk motor buat pusingan
i = 1;
}
delay(10);
}
void motorLeft ()
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 255);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enB, 255);
}
void motorRight ()
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 255);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 255);
}
Conclusion: as a conclusion, this week i focus for the program and the program its already test in hardware also working well but not calibrate in prototype.

No comments:
Post a Comment