const int relay1 = 6; // Relay untuk kecepatan rendah
const int relay2 = 7; // Relay untuk kecepatan sedang
const int relay3 = 8; // Relay untuk kecepatan tinggi
const int buttonUp = 2; // Tombol untuk meningkatkan kecepatan
const int buttonDown = 3; // Tombol untuk menurunkan kecepatan
// Variabel untuk menyimpan status kecepatan
int speedState = 0; // 0 = Mati, 1 = Rendah, 2 = Sedang, 3 = Tinggi
void setup() {
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(buttonUp, INPUT_PULLUP);
pinMode(buttonDown, INPUT_PULLUP);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
Serial.begin(9600);
}
void loop() {
// Baca status tombol
if (digitalRead(buttonUp) == LOW) {
delay(200); // Debouncing
increaseSpeed(); // Tingkatkan kecepatan jika tombol ditekan
}
if (digitalRead(buttonDown) == LOW) {
delay(200); // Debouncing
decreaseSpeed(); // Turunkan kecepatan jika tombol ditekan
}
// Cek status kecepatan dan aktifkan relay sesuai
updateFanSpeed();
}
void increaseSpeed() {
if (speedState < 3) {
speedState++; // Naikkan tingkat kecepatan
Serial.print("Kecepatan naik: ");
Serial.println(speedState);
}
}
void decreaseSpeed() {
if (speedState > 0) {
speedState--; // Turunkan tingkat kecepatan
Serial.print("Kecepatan turun: ");
Serial.println(speedState);
}
}
void updateFanSpeed() {
switch(speedState) {
case 0: // Matikan semua relay (Kipas mati)
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
Serial.println("Kipas mati");
break;
case 1: // Kecepatan rendah (Relay 1 aktif)
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
Serial.println("Kecepatan rendah");
break;
case 2: // Kecepatan sedang (Relay 2 aktif)
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, LOW);
Serial.println("Kecepatan sedang");
break;
case 3: // Kecepatan tinggi (Relay 3 aktif)
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, HIGH);
Serial.println("Kecepatan tinggi");
break;
}
}