#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_LINES);
#define echoPin 5
#define trigPin 4
#define merahPin 6
#define kuningPin 7
#define hijauPin 8
#define buzzPin 9
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600); // bitrate for writeline in serial mode
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(merahPin, OUTPUT);
pinMode(kuningPin, OUTPUT);
pinMode(hijauPin, OUTPUT);
pinMode(buzzPin, OUTPUT);
// this part will show and write all the output processed by arduino
lcd.setCursor(6,0);
lcd.print("Welcome");
lcd.setCursor(2,1);
lcd.print("Flood Sensor");
lcd.setCursor(7, 2);
lcd.print("Enjoy!");
delay(4000);
lcd.clear();
}
//here we need to write a new function
float readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2;
}
//di sini hanya fugsi beep saja berdasarkan durasi
void beep(int duration) {
tone(buzzPin, 1000);
delay(duration);
noTone(buzzPin);
delay(duration);
}
void loop() {
float distance = readDistance();
delay(1000);
digitalWrite(merahPin, LOW);
digitalWrite(kuningPin, LOW);
digitalWrite(hijauPin, LOW);
if (distance < 80) {
beep(2);
digitalWrite(merahPin, HIGH);
} else if (distance <= 200) {
beep(150);
digitalWrite(kuningPin, HIGH);
} else {
beep(1000);
digitalWrite(hijauPin, HIGH);
}
lcd.setCursor(0, 0);
lcd.print("DISTANCE: ");
lcd.setCursor(10, 0);
lcd.print(distance);
Serial.print("jarak: ");
Serial.println(distance);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
bz1:1
bz1:2
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL