#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C, 16 kolom, 2 baris
const int buttonON = A0; // Pin untuk tombol ON
const int buttonStart = A1; // Pin untuk tombol Start
int pressure = 0; // Variabel untuk tekanan darah
int Buzzer01 = 13; //Deklarasi pin Buzzer
bool resultShown = false; // Menyimpan status apakah hasil tekanan sudah ditampilkan
#define LED 8
void setup() {
pinMode (LED, OUTPUT);
pinMode(Buzzer01, OUTPUT);
pinMode(buttonON, INPUT_PULLUP); // Mengatur pin tombol ON sebagai input dengan pull-up resistor
pinMode(buttonStart, INPUT_PULLUP); // Mengatur pin tombol Start sebagai input dengan pull-up resistor
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
lcd.setCursor(1, 0);
lcd.print("Tensimeter Digital");
lcd.setCursor(5, 2);
lcd.print("Sistem ON");
}
void loop() {
// Tampilkan pesan pasang manset ketika tombol ON ditekan
if (digitalRead(buttonON) == LOW) {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Pasang Manset");
delay(2000); // Tunggu 2 detik
while (digitalRead(buttonON) == LOW) {} // Tunggu sampai tombol ON dilepas
resultShown = false; // Set hasil tekanan darah tidak ditampilkan lagi
}
// Tampilkan pesan proses pompa manset ketika tombol Start ditekan
if (digitalRead(buttonStart) == LOW && !resultShown) {
digitalWrite(LED, HIGH);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Proses Pengukuran");
lcd.setCursor(2, 2);
lcd.print("Tekanan Darah");
// Hitung mundur sebelum menampilkan hasil
for (int i = 5; i > 0; i--) {
lcd.setCursor(18,2);
lcd.print(i);
delay(1000); // Tunggu 1 detik
}
// Tampilkan hasil tekanan darah
pressure = random(80, 180); // Simulasi tekanan darah acak antara 80 dan 180
digitalWrite(LED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekanan Darah Anda");
lcd.setCursor(0, 2);
lcd.print("Sistolik: ");
lcd.print(pressure);
lcd.print(" mmHg");
delay(5000); // Tunggu 5 detik
resultShown = true; // Set hasil tekanan darah sudah ditampilkan
//Bunyikan Buzzer
if(pressure > 120) { // Mengkondisikan Buzzer bunyi jika tekanan darah diatas 120 BPM
digitalWrite(Buzzer01, HIGH);
tone(Buzzer01, 100);
delay(1000);
digitalWrite(Buzzer01, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekanan Darah Tinggi");
lcd.setCursor(0, 2);
lcd.print("Periksa Lebih Lanjut");
}
if (pressure < 80){ // dibawah 80 juga bunyi
digitalWrite(Buzzer01, HIGH);
tone(Buzzer01, 100);
delay(1000);
digitalWrite(Buzzer01, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekanan Darah Rendah");
lcd.setCursor(0, 2);
lcd.print("Periksa Lebih Lanjut");
} else {
digitalWrite(Buzzer01, LOW); // antara 80 dan 120 normal
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekanan Darah Normal");
lcd.setCursor(0, 2);
lcd.print("Jaga Kesehatan");
}
}
}