#include <LiquidCrystal_I2C.h>
/*
Buatlah agar komponen tersebut dapat mengukur jarak dan menyalakan led serta menampilkan
kondisinya pada LCD
Syarat :
Jika slide switch mengarah ke kanan ultrasonik dapat mengukur jarak, semua led mati
dan lcd menampilkan hasil pengukuran jarak
Jika slide switch mengarah kekiri maka ultrasonik mati, led merah menyala 2 detik , lalu mati, kuning menyala 2 detik
, lalu mati, hijau menyala 2 detik lalu mati, lcd menampilkan kondisi lampu yang menyala
*/
const int trigpin = 10;
const int echopin = 9;
const int ledmpin = 13;
const int ledkpin = 12;
const int ledhpin = 11;
const int slidepin = 8;
LiquidCrystal_I2C lcd (0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(ledmpin, OUTPUT);
pinMode(ledkpin, OUTPUT);
pinMode(ledhpin, OUTPUT);
pinMode(slidepin, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
digitalWrite(trigpin, LOW);
digitalWrite(ledmpin, LOW);
digitalWrite(ledkpin, LOW);
digitalWrite(ledhpin, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.clear();
float jarak_terukur = mengukur_jarak();
kondisi_laser();
lcd.setCursor(0,0);
lcd.print("Jarak: ");
lcd.print(jarak_terukur);
lcd.print(" cm");
delay(500);
}
float mengukur_jarak(){
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin, LOW);
long duration = pulseIn(echopin, HIGH);
float jarak = duration/58.0;
return jarak;
}
void kondisi_laser(){
int membacaPinSlide = digitalRead(slidepin);
if (membacaPinSlide != 0){
lcd.setCursor(0,1);
digitalWrite(ledmpin, LOW);
digitalWrite(ledkpin, LOW);
digitalWrite(ledhpin, LOW);
}
else{
lcd.setCursor(0,1);
lcd.clear();
lcd.print("ledmerah nyala");
digitalWrite(ledhpin, LOW);
digitalWrite(ledmpin, HIGH);
delay(2000);
lcd.clear();
lcd.print("ledkuning nyala");
digitalWrite(ledmpin, LOW);
digitalWrite(ledkpin, HIGH);
delay(2000);
lcd.clear();
lcd.print("ledhijau nyala");
digitalWrite(ledkpin, LOW);
digitalWrite(ledhpin, HIGH);
delay(2000);
}
}