Вы правы! В радуге порядок такой: красный → оранжевый → жёлтый → зелёный → голубой → синий → фиолетовый.
Вот упрощённый код именно по цветам радуги (7 цветов):
```cpp
int color = 0; // 0-красный, 1-оранжевый, 2-жёлтый, 3-зелёный, 4-голубой, 5-синий, 6-фиолетовый
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(2, INPUT_PULLUP);
}
void loop() {
if (digitalRead(2) == LOW) {
color = (color + 1) % 7; // 0→1→2→3→4→5→6→0
// Красный
if (color == 0) { analogWrite(9, 255); analogWrite(10, 0); analogWrite(11, 0); }
// Оранжевый (красный + немного зелёного)
if (color == 1) { analogWrite(9, 255); analogWrite(10, 80); analogWrite(11, 0); }
// Жёлтый (красный + зелёный)
if (color == 2) { analogWrite(9, 255); analogWrite(10, 255); analogWrite(11, 0); }
// Зелёный
if (color == 3) { analogWrite(9, 0); analogWrite(10, 255); analogWrite(11, 0); }
// Голубой (зелёный + синий)
if (color == 4) { analogWrite(9, 0); analogWrite(10, 255); analogWrite(11, 255); }
// Синий
if (color == 5) { analogWrite(9, 0); analogWrite(10, 0); analogWrite(11, 255); }
// Фиолетовый (красный + синий)
if (color == 6) { analogWrite(9, 255); analogWrite(10, 0); analogWrite(11, 255); }
delay(200); // защита от дребезга
}
}
```
Почему в прошлом коде не хватало цветов?
Там использовался digitalWrite (только ВКЛ/ВЫКЛ), а для оранжевого, жёлтого, голубого нужны промежуточные значения — поэтому здесь используется analogWrite (0–255).
Теперь цвета идут строго как в радуге