#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int buttonPin1 = 2; // Pin untuk tombol 1
const int buttonPin2 = 3; // Pin untuk tombol 2
const int buttonPin3 = 4; // Pin untuk tombol 3
const int buttonPin4 = 5; // Pin untuk tombol 4
const int ledPin = 13; // Pin untuk LED indikator
int dosis = 0; // Variabel untuk menyimpan jumlah dosis
int kecepatan = 0; // Variabel untuk menyimpan kecepatan
LiquidCrystal_I2C lcd(0x27, 20, 4); // Alamat I2C LCD 0x27, 20x4 karakter
void setup() {
pinMode(buttonPin1, INPUT_PULLUP); // Set pin tombol 1 sebagai input dengan pull-up resistor
pinMode(buttonPin2, INPUT_PULLUP); // Set pin tombol 2 sebagai input dengan pull-up resistor
pinMode(buttonPin3, INPUT_PULLUP); // Set pin tombol 3 sebagai input dengan pull-up resistor
pinMode(buttonPin4, INPUT_PULLUP); // Set pin tombol 4 sebagai input dengan pull-up resistor
pinMode(ledPin, OUTPUT); // Set pin LED sebagai output
Serial.begin(9600); // Inisialisasi komunikasi serial
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan latar belakang LCD
}
void loop() {
// Baca status tombol 1
if (digitalRead(buttonPin1) == LOW) {
dosis++; // Tambah jumlah dosis jika tombol 1 ditekan
Serial.print("Jumlah dosis: ");
Serial.println(dosis);
updateLCD(); // Perbarui tampilan LCD
delay(200); // Delay untuk debounce
}
// Baca status tombol 2
if (digitalRead(buttonPin2) == LOW) {
kecepatan++; // Tambah kecepatan jika tombol 2 ditekan
Serial.print("Kecepatan: ");
Serial.println(kecepatan);
updateLCD(); // Perbarui tampilan LCD
delay(200); // Delay untuk debounce
}
// Baca status tombol 3
if (digitalRead(buttonPin3) == LOW) {
// Mulai sistem setelah pemilihan dosis dan kecepatan
if (dosis > 0 && kecepatan > 0) {
Serial.println("Memulai sistem...");
digitalWrite(ledPin, HIGH); // Nyalakan LED indikator
// TODO: Tambahkan kode untuk memulai sistem
} else {
Serial.println("Pilih dosis dan kecepatan terlebih dahulu");
}
delay(200); // Delay untuk debounce
}
// Baca status tombol 4
if (digitalRead(buttonPin4) == LOW) {
Serial.println("Emergency! Mematikan sistem...");
digitalWrite(ledPin, LOW); // Matikan LED indikator
// TODO: Tambahkan kode untuk menghentikan sistem darurat
dosis = 0; // Reset jumlah dosis
kecepatan = 0; // Reset kecepatan
updateLCD(); // Perbarui tampilan LCD
delay(200); // Delay untuk debounce
}
}
void updateLCD() {
lcd.clear(); // Bersihkan tampilan LCD
lcd.setCursor(0, 0); // Set posisi kursor
lcd.print("Dosis: "); // Tampilkan label
lcd.print(dosis); // Tampilkan nilai dosis
lcd.setCursor(0, 1); // Pindah ke baris berikutnya
lcd.print("Kecepatan: "); // Tampilkan label
lcd.print(kecepatan); // Tampilkan nilai kecepatan
}