Код:
byte mode;
byte repeated;
byte r1;
byte r2;
byte r3;
byte r4;
unsigned long last_time;
void setup() {
// put your setup code here, to run once:
pinMode(3, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
mode = 1;
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if(mode==1) {
digitalWrite(3, 1); //Зажигаем красный светодиод
if (millis() - last_time > 100) {
last_time = millis();
for(int i=0;i<=255;i++) { // Плавно добавляем зелёный
analogWrite(6, i);
delay(10);
}
}
if (millis() - last_time > 100) {
last_time = millis();
for(int i=255;i>=0;i--) { //Плавно выключаем красный
analogWrite(3, i);
delay(10);
}
}
if (millis() - last_time > 100) {
last_time = millis();
for(int i=0;i<=255;i++) { //Плавно добавляем синий
analogWrite(9, i);
delay(10);
}
}
if (millis() - last_time > 100) {
last_time = millis();
for(int i=255;i>=0;i--) { //Плавно выключаем зелёный
analogWrite(6, i);
delay(10);
}
}
if (millis() - last_time > 100) {
last_time = millis();
for(int i=0;i<=255;i++) { //Плавно Включаем красный
analogWrite(3, i);
delay(10);
}
}
if (millis() - last_time > 100) {
last_time = millis();
for(int i=255;i>=0;i--) { //Плавно выключаем синий
analogWrite(9, i);
delay(10);
}
}
if (millis() - last_time > 100) {
last_time = millis();
}
}
if(mode==2) {
digitalWrite(3, 1);
if (millis() - last_time > 100) {
last_time = millis();
digitalWrite(3,0);
digitalWrite(6,1);
}
if (millis() - last_time > 100) {
last_time = millis();
digitalWrite(6,0);
digitalWrite(9,1);
}
if (millis() - last_time > 100) {
last_time = millis();
digitalWrite(9,0);
}
if (millis() - last_time > 100) {
last_time = millis();
}
}
if(mode==3) {
int led = random(1,4);
Serial.print(led);
if(led==1) {
digitalWrite(3, 1);
if (millis() - last_time > 1000) {
last_time = millis();
digitalWrite(3, 0);
}
}
if(led==2) {
digitalWrite(6, 1);
if (millis() - last_time > 1000) {
last_time = millis();
digitalWrite(6, 0);
}
}
if(led==3) {
digitalWrite(9, 1);
if (millis() - last_time > 1000) {
last_time = millis();
digitalWrite(9, 0);
}
}
}
if(mode==4) {
for(int i=0;i<=255;i++) { //Плавно выключаем синий
analogWrite(3, i);
analogWrite(6, i);
analogWrite(9, i);
delay(5);
}
for(int i=255;i>=0;i--) { //Плавно выключаем синий
analogWrite(3, i);
analogWrite(6, i);
analogWrite(9, i);
delay(5);
}
}
}
Так как пока что нет кнопки, решил подождать выходные только с радугой, но проблема в том, то что когда этот режим повторился два раза, всё начало сходить с ума: Не включаются светодиоды, дважды загорается один и тот же, включаются сразу два светодиода, включается другой светодиод вместо нужного и т.д. Я не понимаю где моя ошибка, помогите.