#define LED_RED 13
#define LED_GREEN 12
#define LED_BLUE 8
#define BUTTON 2
int lastButton = LOW;
int curButton = LOW;
int cycle = 0;
int red = HIGH;
int green = HIGH;
int blue = HIGH;
void setup()
{
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(BUTTON, INPUT);
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, HIGH);
}
int debounce (int last)
{
int current = digitalRead(BUTTON);
if(last != current)
{
delay(5);
current = digitalRead(BUTTON);
}
return current;
}
void loop()
{
curButton = debounce(lastButton);
if (lastButton == HIGH && curButton == LOW)
{
++cycle;
cycle %= 8;
red = cycle % 2;
green = (cycle % 4) / 2;
blue = (cycle % 8) / 4;
digitalWrite(LED_RED, !red);
digitalWrite(LED_GREEN, !green);
digitalWrite(LED_BLUE, !blue);
}
lastButton = curButton;
//cycle = 0(000) - Выключено
//cycle = 1(001) - Красный
//cycle = 2(010) - Зелёный
//cycle = 3(011) - жёлтый
//cycle = 4(100) - Синий
//cycle = 5(101) - Сиреневый
//cycle = 6(110) - Бюриюзовый
//cycle = 7(111) - Белый
}