// INTERUPT-PERCOBAAN 2
int ledPin[] = {4, 5, 6, 9, 10, 11};
int rotaryPin = A0;
int keadaanVariasi = 0;
int delayLed;
void setup() {
Serial.begin(9600);
pinMode(rotaryPin, INPUT);
for (int i = 0; i < 6; i++) {
pinMode(ledPin[i], OUTPUT);
}
attachInterrupt(digitalPinToInterrupt(3), variasi, RISING);
}
void loop() {
delayLed = analogRead(rotaryPin);
delayLed = map(delayLed, 0, 1023, 10, 1000);
switch (keadaanVariasi)
{
case 0:
kananKiri();
break;
case 1:
kiriKanan();
break;
case 2:
tengahKananKiri();
break;
default:
break;
}
}
void variasi() {
delay(100);
keadaanVariasi++;
Serial.print("keadaanVariasi=");
Serial.println(keadaanVariasi);
if (keadaanVariasi > 2) keadaanVariasi = 0;
}
void kananKiri() {
for (int i = 0; i < 6; i++) {
digitalWrite(ledPin[i], HIGH);
delay(delayLed);
digitalWrite(ledPin[i], LOW);
delay(delayLed);
if (keadaanVariasi != 0) break;
}
}
void kiriKanan() {
for (int i = 5; i > -1; i--) {
digitalWrite(ledPin[i], HIGH);
delay(delayLed);
digitalWrite(ledPin[i], LOW);
delay(delayLed);
if (keadaanVariasi != 1) break;
}
}
void tengahKananKiri() {
int angkaGanjil = 1;
for (int i = 2; i > -1; i--) {
digitalWrite(ledPin[i], HIGH);
digitalWrite(ledPin[i + angkaGanjil], HIGH);
delay(delayLed);
digitalWrite(ledPin[i], LOW);
digitalWrite(ledPin[i + angkaGanjil], LOW);
delay(delayLed);
angkaGanjil += 2;
if (keadaanVariasi != 2) break;
}
} //RIDHO MOHAMMAD AZRRIL D400210120