#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) - Белый    
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
rgb2:R
rgb2:COM
rgb2:G
rgb2:B
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
r1:1
r1:2