#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ubah alamat I2C menjadi 0x3F jika diperlukan
#define buzzPin 17
#define ledMerah 25
#define ledKuning 32
#define ledHijau 33
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(115200);
// Set pin output untuk LED dan buzzer
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledHijau, OUTPUT);
pinMode(buzzPin, OUTPUT);
// Inisialisasi LCD
lcd.begin(16, 2); // Ganti lcd.init() dengan lcd.begin(16, 2)
lcd.backlight(); // Mengaktifkan backlight LCD
// Menampilkan teks awal di LCD
lcd.setCursor(3, 0);
lcd.print("Heart Beat");
}
void loop() {
// Membaca nilai dari potensiometer atau sensor yang terhubung ke pin analog 34
int NilaiPot = analogRead(34);
// Menampilkan nilai sensor pada LCD (dibagi 16.38 untuk konversi ke BPM)
lcd.setCursor(4, 1);
lcd.print(NilaiPot / 16.38);
// Menampilkan nilai yang sama ke serial monitor
Serial.println(NilaiPot / 16.38);
// Delay untuk pembaruan tampilan LCD setiap 1 detik
delay(1000);
// Kondisi untuk mengatur status LED dan buzzer berdasarkan nilai BPM
if (NilaiPot / 16.38 > 180) {
// Jika nilai BPM lebih dari 180, LED merah menyala, buzzer berbunyi
digitalWrite(ledMerah, HIGH);
digitalWrite(ledKuning, LOW);
digitalWrite(ledHijau, LOW);
tone(buzzPin, 500);
}
else if (NilaiPot / 16.38 > 150) {
// Jika nilai BPM lebih dari 150, LED kuning menyala, buzzer berbunyi sesaat
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, HIGH);
digitalWrite(ledHijau, LOW);
tone(buzzPin, 500);
delay(100);
noTone(buzzPin);
delay(3000);
}
else {
// Jika nilai BPM kurang dari 150, LED hijau menyala, tidak ada bunyi buzzer
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, LOW);
digitalWrite(ledHijau, HIGH);
noTone(buzzPin);
}
}