Загрузка данных


int color = -1;
bool buttonWasPressed = false;  // флаг, что кнопка уже обработана

void setup() {
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  
  setColor(255, 0, 0);  // сразу красный
}

void loop() {
  if (digitalRead(2) == LOW) {        // кнопка нажата
    if (!buttonWasPressed) {          // если ещё не обработали это нажатие
      buttonWasPressed = true;        // запоминаем
      
      color = (color + 1) % 7;
      
      if (color == 0) setColor(255, 0, 0);
      if (color == 1) setColor(255, 80, 0);
      if (color == 2) setColor(255, 255, 0);
      if (color == 3) setColor(0, 255, 0);
      if (color == 4) setColor(0, 255, 255);
      if (color == 5) setColor(0, 0, 255);
      if (color == 6) setColor(255, 0, 255);
      
      delay(50);  // маленькая задержка для надёжности
    }
  } else {
    buttonWasPressed = false;  // кнопку отпустили — можно обрабатывать следующее нажатие
  }
}

void setColor(int r, int g, int b) {
  analogWrite(9, r);
  analogWrite(10, g);
  analogWrite(11, b);
}