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