Friday, 11 September 2015

Control different things at different distance with Arduino



In this post I'm going share a sketch with you which (sketch) can turn on and off as many things you want at different distance as you wish. This means you can turn something at a specific distance. For example you want to turn on a motor after 10cm and turn it off at 50cm, you can do this easily with the sketch below.

Note: I've used three leds here if you replace them with relay, motor and other stuff it will still work fine.

Things to change:

Change the pins as you wish.
int trigPin = 2;
int echoPin = 3;
int led1 = 4;
---
Make sure you write OUTPUT to every led.
 pinMode(led1, OUTPUT);
---
if (distance >=1 && distance <=10){
 Remember >= means from and <=  means under.
 And the number you seeing after >= and <= is centimetre/s.
 ---

 Here is the sketch.
//define the pins for ultrasonic sensor and leds here
int trigPin = 2;
int echoPin = 3;
int led1 = 4;
int led2 = 5;
int led3 = 6;


void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);

}

void loop() {
   int duration, distance;
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;

if (distance >=1 && distance <=10){
   Serial.print(distance);
    Serial.println(" cm");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);

  }

  else if (distance >=11 && distance <=20){
   Serial.print(distance);
    Serial.println(" cm");
    digitalWrite(led2, HIGH);
    digitalWrite(led1, LOW);
    digitalWrite(led3, LOW);

  }

  else if (distance >=21 && distance <=30){
   Serial.print(distance);
    Serial.println(" cm");
    digitalWrite(led3, HIGH);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);

  }
 
else {
    Serial.print(distance);
    Serial.println(" cm");
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    delay(30);
  }
}

Watch the video to see the sketch in action.



No comments:

Post a Comment