const int ledA = 9;
const int ledB = 10;
const int ledC = 11;
int i = 0;
volatile int val = 0;
void setup() {
pinMode(ledA, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledC, OUTPUT);
attachInterrupt(0, changesw, RISING);
}
void changesw() {
detachInterrupt(0);
pinMode(2, INPUT);
while (digitalRead(2) == 1) {}
attachInterrupt(0, changesw, RISING);
val++;
if(val > 3) val = 0;
}
void loop() {
if (val == 1) {
detachInterrupt(0);
for (i = 0; i < 256; i++) {
analogWrite(ledA, i);
delay(2);
}
for (i = 0; i < 256; i++) {
analogWrite(ledB, i);
delay(2);
}
val = 2;
attachInterrupt(0, changesw, RISING);
}
if (val == 2){
detachInterrupt(0);
for (i = 0; i < 256; i++) {
analogWrite(ledC, i);
delay(2);
}
delay(200);
for (i = 255; i > -1; i--) {
analogWrite(ledC, i);
delay(2);
}
delay(200);
attachInterrupt(0, changesw, RISING);
}
if (val == 3) {
detachInterrupt(0);
for (i = 0; i < 256; i++) {
analogWrite(ledC, i);
delay(2);
}
for (i = 255; i > -1; i--) {
analogWrite(ledA, i);
analogWrite(ledB, i);
analogWrite(ledC, i);
delay(2);
}
delay(1000);
val = 0;
attachInterrupt(0, changesw, RISING);
}
}