Saturday, March 24, 2018

week 9

Title:  create a program land mower  in arduino 
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. 

No comments:

Post a Comment