water level meter
unknown
c_cpp
3 years ago
3.0 kB
10
Indexable
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//membuat objek lcd
LiquidCrystal_I2C lcd(0x27, 16, 2);
//mendefinikan pin ultrasonik
#define trigpin 4
#define echopin 2
//mendefinisikan pin lampu, relay sama buzzer
int ledlow = 5;
int ledmiddle = 6;
int ledhigh = 7;
int buzzer = 8;
int relay = 9;
//mendeklarasikan durasi dan distance
int duration, distance;
void setup()
{
Serial.begin(9600);
lcd.begin();
//mengatur pin sebagai input atau output
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(ledlow, OUTPUT);
pinMode(ledmiddle, OUTPUT);
pinMode(ledhigh, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(relay, OUTPUT);
//mengatur penulisan pin digital saat awal sistem dihidupkan
digitalWrite(ledlow, LOW);
digitalWrite(ledmiddle, LOW);
digitalWrite(ledhigh, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(relay, LOW);
delay(1000);
}
void loop()
{
digitalWrite(trigpin, LOW); //memastikan tidak ada pengiriman gelombang suara (membersihkan)
delayMicroseconds(2);
digitalWrite(trigpin, HIGH); //memberikan trigger kepada transmiter selama 10 microsecond
delayMicroseconds(10);
digitalWrite(trigpin, LOW);
duration = pulseIn(echopin, HIGH); //ketika menerima gelombang maka akan high dan menghitung waktunya (s = v . t)
distance = duration*0.034/2;
//Menampilkan jarak pada serial monitor
Serial.println("cm:");
Serial.println(distance);
//Menampilkan jarak pada LCD 16x2
lcd.setCursor(0,0);
lcd.print("Jarak = ");
lcd.print(distance);
lcd.print(" cm ");
if( (distance > 0) && (distance <= 5) ) //Batas Ambang
{
digitalWrite(ledlow, HIGH);
digitalWrite(ledmiddle, LOW);
digitalWrite(ledhigh, LOW);
digitalWrite(relay, HIGH);
digitalWrite(buzzer, HIGH);
delay(1000);
lcd.setCursor(0,1);
lcd.print("Tangki Overload ");
} else
if( (distance > 5) && (distance <= 10) ) //Level High
{
digitalWrite(ledlow, LOW);
digitalWrite(ledmiddle, LOW);
digitalWrite(ledhigh, HIGH);
digitalWrite(buzzer, LOW);
digitalWrite(relay, LOW);
lcd.setCursor(0,1);
lcd.print("Tangki Penuh ");
} else
if( (distance > 10) && (distance <= 40) ) //Level Middle
{
digitalWrite(ledlow, LOW);
digitalWrite(ledmiddle, HIGH);
digitalWrite(ledhigh, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(relay, LOW);
lcd.setCursor(0,1);
lcd.print("Tangki Berisi ");
} else
if( (distance > 40) && (distance <= 60) ) //Level Low
{
digitalWrite(ledlow, HIGH);
digitalWrite(ledmiddle, LOW);
digitalWrite(ledhigh, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(relay, LOW);
lcd.setCursor(0,1);
lcd.print("Tangki Kosong ");
}else
if( (distance > 60) ) //Level Low
{
digitalWrite(ledlow, HIGH);
digitalWrite(ledmiddle, LOW);
digitalWrite(ledhigh, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(relay, LOW);
lcd.setCursor(0,1);
lcd.print("Tangki Kosong ");
}
delay(500);
}
Editor is loading...