Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk mengukur kecepatan angin dengan satuan m/s, yang perlu diperhatikan alat ini perlu dikalibrasi terlebih dahulu sebelum digunakan. alat ini menggunakan LCD 16x2 sebagai interfacenya. untuk lebih jelasnya berikut adalah komponen dan programnya.
a. Arduino Uno
b. Sensor Kecepatan Udara
c. LCD 16x2 + I2C
d. Program Arduino IDE
#include <Wire.h> // i2C Conection Library
#include <LiquidCrystal_I2C.h> //i2C LCD Library
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
volatile byte half_revolutions; //variabel tipe data byte
unsigned int rpmku; //variabel tipe data integer
unsigned long timeold; //variabel tipe data long
int kalibrasi; //variabel tipe data integer
void setup() {
attachInterrupt(0, rpm_fun, RISING); //mengambil sinyal high pada pin 2
half_revolutions = 0; //memberikan nilai 0 pada viariabel
rpmku = 0;
timeold = 0;
kalibrasi = 0;
Serial.begin(9600);
lcd.begin();
lcd.clear();
lcd.noCursor();
}
void loop() {
rpmku = 30*1000/(millis() - timeold)*half_revolutions; //mengaktifkan counter millis
timeold = millis(); //hasil counter dimasukkan ke variabel timeold
half_revolutions = 0; //reset variabel
kalibrasi = (rpmku - 150)/109; //rumus kalibrasi
if((kalibrasi > 590)&&(kalibrasi < 605)){
kalibrasi = 0;
}
lcd.setCursor(0, 0);
lcd.print("Kec= ");
lcd.print(kalibrasi);
lcd.print(" m/s ");
delay(200);
}
void rpm_fun(){
half_revolutions++; //counter interupt
}
#include <LiquidCrystal_I2C.h> //i2C LCD Library
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
volatile byte half_revolutions; //variabel tipe data byte
unsigned int rpmku; //variabel tipe data integer
unsigned long timeold; //variabel tipe data long
int kalibrasi; //variabel tipe data integer
void setup() {
attachInterrupt(0, rpm_fun, RISING); //mengambil sinyal high pada pin 2
half_revolutions = 0; //memberikan nilai 0 pada viariabel
rpmku = 0;
timeold = 0;
kalibrasi = 0;
Serial.begin(9600);
lcd.begin();
lcd.clear();
lcd.noCursor();
}
void loop() {
rpmku = 30*1000/(millis() - timeold)*half_revolutions; //mengaktifkan counter millis
timeold = millis(); //hasil counter dimasukkan ke variabel timeold
half_revolutions = 0; //reset variabel
kalibrasi = (rpmku - 150)/109; //rumus kalibrasi
if((kalibrasi > 590)&&(kalibrasi < 605)){
kalibrasi = 0;
}
lcd.setCursor(0, 0);
lcd.print("Kec= ");
lcd.print(kalibrasi);
lcd.print(" m/s ");
delay(200);
}
void rpm_fun(){
half_revolutions++; //counter interupt
}
e. VIDEO HASILNYA
No comments:
Post a Comment