int R_RLED = 21;
int R_GLED = 19;
int R_BLED = 18;
int L_RLED = 25;
int L_GLED = 26;
int L_BLED = 27;
int PIR1 = 5;
int PIR2 = 33;
int ledState = 0;
void setup()
{
Serial.begin(115200);
pinMode(R_RLED, OUTPUT);
pinMode(R_GLED, OUTPUT);
pinMode(R_BLED, OUTPUT);
pinMode(L_RLED, OUTPUT);
pinMode(L_GLED, OUTPUT);
pinMode(L_BLED, OUTPUT);
pinMode(PIR1, INPUT);
pinMode(PIR2, INPUT);
}
void loop() {
// Mengecek apakah sensor PIR kiri mendeteksi gerakan
if (digitalRead(PIR1) == HIGH) {
ledState = 1; // Jika iya, maka atur ledState menjadi 1
}
// Jika tidak, cek apakah sensor PIR kanan mendeteksi gerakan
else if (digitalRead(PIR2) == HIGH) {
ledState = 2; // Jika iya, maka atur ledState menjadi 2
}
// Jika tidak ada sensor yang mendeteksi gerakan
else {
ledState = 0; // Atur ledState menjadi 0
}
// Berdasarkan nilai ledState, pilih aksi yang sesuai
switch (ledState) {
case 0: // Jika ledState adalah 0 (tidak ada gerakan)
rotateRedGreenBlue(); // Panggil fungsi rotateRedGreenBlue
break;
case 1: // Jika ledState adalah 1 (gerakan terdeteksi oleh sensor kiri)
rotateRedOffBlueOff(); // Panggil fungsi rotateRedOffBlueOff
break;
case 2: // Jika ledState adalah 2 (gerakan terdeteksi oleh sensor kanan)
rotateGreenOff(); // Panggil fungsi rotateGreenOff
break;
}
}
void rotateRedOffBlueOff() {
// Hidupkan lampu merah, tunggu 500 milidetik, matikan lampu merah
digitalWrite(R_RLED, HIGH);
delay(500);
digitalWrite(L_RLED, LOW);
delay(500);
// Hidupkan lampu biru, tunggu 500 milidetik, matikan lampu biru
digitalWrite(R_BLED, HIGH);
delay(500);
digitalWrite(L_BLED, LOW);
delay(500);
}
void rotateRedGreenBlue() {
// Hidupkan lampu merah, tunggu 500 milidetik, matikan lampu merah
digitalWrite(R_RLED, HIGH);
delay(500);
digitalWrite(L_RLED, LOW);
delay(500);
// Hidupkan lampu hijau, tunggu 500 milidetik, matikan lampu hijau
digitalWrite(R_GLED, HIGH);
delay(500);
digitalWrite(L_GLED, LOW);
delay(500);
// Hidupkan lampu biru, tunggu 500 milidetik, matikan lampu biru
digitalWrite(R_BLED, HIGH);
delay(500);
digitalWrite(L_BLED, LOW);
delay(500);
}
void rotateGreenOff() {
// Hidupkan lampu hijau, tunggu 500 milidetik, matikan lampu hijau
digitalWrite(R_GLED, HIGH);
delay(500);
digitalWrite(L_GLED, LOW);
delay(500);
}