Здравствуйте. Помогите разобраться с функцией delay();
Делаю герлянду из обычных светодиодов. Сделал несколько режимов, сделал кнопку для переключения этих режимов. Но изза функции delay(); кнопка не переключает режимы, 100/500 раз нужно нажать чтобы переглючился. Без delay(); все работает отлично.
Делаю герлянду из обычных светодиодов. Сделал несколько режимов, сделал кнопку для переключения этих режимов. Но изза функции delay(); кнопка не переключает режимы, 100/500 раз нужно нажать чтобы переглючился. Без delay(); все работает отлично.
код:
#include <EncButton.h>
EncButton<EB_TICK, 2> btn(INPUT_PULLUP);
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
int led10 = 10;
int led11 = 11;
int led2 = 12;
void setup() {
Serial.begin(9600);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(led8,OUTPUT);
pinMode(led9,OUTPUT);
pinMode(led10,OUTPUT);
pinMode(led11,OUTPUT);
}
void loop()
{
static byte mode = 0;
btn.tick();
if (btn.isClick()) {
if (++mode >= 15) mode = 0;
Serial.println(mode);
}
switch (mode) {
case 0: task1(); break;
case 1: task2(); break;
case 2: task3(); break;
case 3: task4(); break;
case 4: task5(); break;
case 5: task6(); break;
case 6: task7(); break;
case 7: task8(); break;
case 8: task9(); break;
case 9: task10(); break;
case 10: task11(); break;
case 11: task12(); break;
case 12: task13(); break;
case 13: task14(); break;
case 14: task15(); break;
}
}
void task1(){
Serial.println("1-Раз");
}
void task2(){
Serial.println("2-Раз");
int t = 100;
digitalWrite(led5,HIGH);
delay(t);
digitalWrite(led6,HIGH);
delay(t);
digitalWrite(led7,HIGH);
delay(t);
digitalWrite(led8,HIGH);
delay(t);
digitalWrite(led9,HIGH);
delay(t);
digitalWrite(led10,HIGH);
delay(t);
digitalWrite(led11,HIGH);
delay(t);
digitalWrite(led2,LOW);
delay(t);
digitalWrite(led3,LOW);
delay(t);
digitalWrite(led4,LOW);
delay(t);
digitalWrite(led5,LOW);
delay(t);
digitalWrite(led6,LOW);
delay(t);
digitalWrite(led7,LOW);
delay(t);
digitalWrite(led8,LOW);
delay(t);
digitalWrite(led9,LOW);
delay(t);
digitalWrite(led10,LOW);
delay(t);
digitalWrite(led11,LOW);
delay(t);
}
void task3(){
Serial.println("3-Раз");
}
void task4(){
Serial.println("4-Раз");
}
void task5(){
Serial.println("5-Раз");
}
void task6(){
Serial.println("6-Раз");
}
void task7(){
Serial.println("7-Раз");
}
void task8(){
Serial.println("8-Раз");
}
void task9(){
Serial.println("9-Раз");
}
void task10(){
Serial.println("10-Раз");
}
void task11(){
Serial.println("11-Раз");
}
void task12(){
Serial.println("12-Раз");
}
void task13(){
Serial.println("13-Раз");
}
void task14(){
Serial.println("14-Раз");
}
void task15(){
Serial.println("15-Раз");
}