// KELOMPOK CS_Mickey_Mouse
// Shirley, Claresta Elysia, Jovandi Todana
#include <LiquidCrystal.h>
const int potPin = A0;
const int led1Pin = 13;
const int led2Pin = 4;
const int buzzer1Pin = 3;
const int buzzer2Pin = 5;
const int button1Pin = 2;
const int button2Pin = 6;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
int mode = 0;
bool button1Pressed = false;
bool button2Pressed = false;
unsigned long lastDebounceTime1 = 0;
unsigned long lastDebounceTime2 = 0;
const unsigned long debounceDelay = 50;
void setup() {
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(buzzer1Pin, OUTPUT);
pinMode(buzzer2Pin, OUTPUT);
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.print("Normal Mode");
}
void loop() {
int potValue = analogRead(potPin);
int button1State = digitalRead(button1Pin);
int button2State = digitalRead(button2Pin);
// Debouncing tombol 1
if (button1State == LOW && (millis() - lastDebounceTime1) > debounceDelay) {
button1Pressed = !button1Pressed;
lastDebounceTime1 = millis();
if (button1Pressed) {
mode = (mode == 1) ? 0 : 1; // Toggle Party Mode
lcd.clear();
lcd.print((mode == 1) ? "Party Mode Active!" : "Normal Mode");
}
}
// Debouncing tombol 2
if (button2State == LOW && (millis() - lastDebounceTime2) > debounceDelay) {
button2Pressed = !button2Pressed;
lastDebounceTime2 = millis();
if (button2Pressed) {
mode = (mode == 2) ? 0 : 2;
lcd.clear();
lcd.print((mode == 2) ? "System Paused" : "Normal Mode");
}
}
if (mode == 0) {
// Normal Mode
lcd.setCursor(0, 1);
if (potValue < 341) {
// Nada rendah
lcd.print("Rendah ");
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, LOW);
tone(buzzer1Pin, 262);
} else if (potValue < 682) {
// Nada sedang
lcd.print("Sedang ");
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, HIGH);
tone(buzzer1Pin, 392);
} else {
// Nada tinggi
lcd.print("Tinggi ");
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
tone(buzzer1Pin, 523);
}
delay(100);
}
// Party Mode
else if (mode == 1) {
lcd.setCursor(0, 1);
lcd.print("LED Flashing");
digitalWrite(led1Pin, !digitalRead(led1Pin));
digitalWrite(led2Pin, !digitalRead(led2Pin));
tone(buzzer1Pin, random(100, 1000));
delay(100);
}
// Mode Pause
else if (mode == 2) {
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
noTone(buzzer1Pin);
}
}