Мне нужно так, чтобы при нажатии менялись разные режимы, можете примерчик написать, или скинуть ссылочку на код? что бы хотя бы светодиоды при нажатии менялись, или яркость одного светодиода. Буду благодарен за помощь
как пример - светофор Код (Text): #include <DI.h> #include <Meander.h> #include <Timer_P.h> #define Button 3 #define LedYellow 12 #define LedRed 13 #define LedGreen 8 //Контакт на вход (кнопка) DI Key(Button, 10); Timer_P KeyDelay, Cycle; Meander P_1s; boolean KeyDelay_old; byte mode; void setup() { // Контакты на выход pinMode(LedYellow, OUTPUT); // Светодиод желтый pinMode(LedRed, OUTPUT); //светодиод красный pinMode(LedGreen, OUTPUT); } void loop() { //Запускаем меандр P_1s.MeanderV(800, 400); //(период, длительность импульса) //Обновляем вход клавиши Key.DI_Refresh(); //Задержка после нажатия кнопки KeyDelay.TimerV(Key.DI_Read(), 0, 2, 1000); //Если задержка истекла, то изменяем режим if (KeyDelay.Q0() && !KeyDelay_old) mode = (++mode)%3; //Цикл светофора Cycle.TimerV(!Cycle.Q0() && mode==0, false, 2, 15000); switch (mode) { case 0: {long Remains = Cycle.GetRemains(); digitalWrite(LedRed, Remains >8000); digitalWrite(LedYellow, Remains <10000 && Remains >8000); digitalWrite(LedGreen, (Remains <8000 && Remains >3000) || (Remains <3000 && P_1s.Q0())); } break; case 1: digitalWrite(LedYellow, P_1s.Q0()); digitalWrite(LedRed, LOW); digitalWrite(LedGreen, LOW); break; case 2: digitalWrite(LedYellow, LOW); digitalWrite(LedRed, LOW); digitalWrite(LedGreen, LOW); break; } //сохраняем значение таймера задержки KeyDelay_old = KeyDelay.Q0(); } понадобится эта библиотека. https://yadi.sk/d/hGQy8xu1fZNks класс DI считывает входы клавиш и фильтрует дребезг. Кнопки должны быть подключены как здесь: http://wiki.amperka.ru/конспект-arduino:миксер класс Meander - для меандра мигания класс Timer_P - для формирования задержки после нажатия на кнопку и для основного цикла светофора. совсем облегченный вариант Код (Text): #include <DI.h> #define Button 3 //Контакт на вход (кнопка) DI Key(Button, 10); boolean Key_old; byte mode; void setup() { } void loop() { //Обновляем вход клавиши Key.DI_Refresh(); //Если задержка истекла, то изменяем режим if (Key.DI_Read() && !Key_old) mode = (++mode)%3; switch (mode) { case 0: break; case 1: break; case 2: break; } //сохраняем значение таймера задержки Key_old = Key.DI_Read(); }