#include <Servo.h>
#include <LiquidCrystal_I2C.h>
// LCD setup (adjust the I2C address if necessary, usually 0x27 or 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin assignments
const int button_pin1 = 1;
const int button_pin2 = 2;
const int button_pin3 = 3;
const int button_pin4 = 4;
const int button_pin5 = 5;
const int button_pin6 = 6;
const int LED_pin = 7; // LED pin
const int servo_pin = 9; // Servo pin
// Servo object
Servo myServo;
void setup() {
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("Berapa Liter?");
// Set up buttons and LED pin
pinMode(button_pin1, INPUT_PULLUP);
pinMode(button_pin2, INPUT_PULLUP);
pinMode(button_pin3, INPUT_PULLUP);
pinMode(button_pin4, INPUT_PULLUP);
pinMode(button_pin5, INPUT_PULLUP);
pinMode(button_pin6, INPUT_PULLUP);
pinMode(LED_pin, OUTPUT);
// Attach the servo motor
myServo.attach(servo_pin);
}
void loop() {
// Read button states
int button_state1 = digitalRead(button_pin1);
int button_state2 = digitalRead(button_pin2);
int button_state3 = digitalRead(button_pin3);
int button_state4 = digitalRead(button_pin4);
int button_state5 = digitalRead(button_pin5);
int button_state6 = digitalRead(button_pin6);
// Check which button is pressed and control the servo & LCD
if (button_state1 == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("100 ml");
digitalWrite(LED_pin, LOW);
myServo.write(10); // Move servo to 10 degrees (example position)
}
else {
digitalWrite(LED_pin, HIGH); // Turn off LED when no button is pressed
myServo.write(0); // Move servo to home position (0 degrees)
}
if (button_state2 == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("150 ml");
digitalWrite(LED_pin, LOW);
myServo.write(30); // Move servo to 30 degrees
}
else {
digitalWrite(LED_pin, HIGH); // Turn off LED when no button is pressed
myServo.write(0); // Move servo to home position (0 degrees)
}
if (button_state3 == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("200 ml");
digitalWrite(LED_pin, LOW);
myServo.write(60); // Move servo to 60 degrees
}
else {
digitalWrite(LED_pin, HIGH); // Turn off LED when no button is pressed
myServo.write(0); // Move servo to home position (0 degrees)
}
if (button_state4 == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("250 ml");
digitalWrite(LED_pin, LOW);
myServo.write(90); // Move servo to 90 degrees
}
else {
digitalWrite(LED_pin, HIGH); // Turn off LED when no button is pressed
myServo.write(0); // Move servo to home position (0 degrees)
}
/*else if (button_state5 == LOW) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("300 ml");
digitalWrite(LED_pin, LOW);
myServo.write(120); // Move servo to 120 degrees
}
else if (button_state6 == LOW) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Minum");
lcd.setCursor(0, 1);
lcd.print("350 ml");
digitalWrite(LED_pin, LOW);
myServo.write(150); // Move servo to 150 degrees
}
else {
digitalWrite(LED_pin, HIGH); // Turn off LED when no button is pressed
myServo.write(0); // Move servo to home position (0 degrees)
}*/
}