Translate

Monitor jarak dan kecepatan Sensor HC-SRF04 dan HB100

Monitor jarak dan kecepatan Sensor HC-SRF04 dan HB100


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mengukur kecepatan benda dan juga jarak benda dengan menggunakan sensor HB100, alat ini menggunakan Arduino mega dan sensor jarak dan hb100. untuk lebih jelasnya berikut adalah koding dan skemanya.


1. Skema




2. Program Arduino IDE

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> 
#include "FreqMeasure.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);

#define trigPin 2
#define echoPin 3
float spd, spdold, spdmax;
int buzzer = 4;
long duration, distance;
int tanda;
    
void setup()
{
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzer, OUTPUT);
  lcd.begin();
  lcd.clear();
  Serial.begin(9600);
  FreqMeasure.begin();
}

double sum=0;
int count=0;

void loop(){
 
  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;

 
 lcd.setCursor(0,1);
 lcd.print("S: ");
 lcd.print(distance);
 lcd.print(" cm  ");  

if(tanda == 1){   
  if (FreqMeasure.available()) {
    // average 30 readings together
    sum = sum + FreqMeasure.read();
    count = count + 1;
    if (count > 30) {
      float frequency = FreqMeasure.countToFrequency(sum / count);
      spd = (frequency / 19.49) * 0.277778; //conversion from frequency to kilometers per hour (sorry, imperial guys :)
      //to improve speed, we update only the bottom row of the LCD
      
 if(spdmax > spdold){
  
  }

 if(spdmax < spdold){
   spdmax = spdold;
  }  

 lcd.setCursor(0,0);
 lcd.print("V: ");
 lcd.print(spdmax);
 lcd.print(" m/s ");
     
//      Serial.println(distance);
//      Serial.println(spd);
          
      sum = 0;
      count = 0;
    }
  }
}

  if(distance <= 10)
  {
  digitalWrite(buzzer, HIGH);
  delay(3000);
  tanda = 1;
  }

  if(distance > 10)
  {
  digitalWrite(buzzer, LOW);
  }
 
 spdold = spd;
   
}



3. VIDEO HASILNYA



No comments:

Post a Comment