Все нормально, только, если хочешь еще поставить кнопку для переключения режимов, то с этих двух эту функцию лучше убрать, выкладывай свой код самого главного режима
Ну на самом деле не только здесь, так у тебя 6 режим не будет сохраняться при выключении, точнее бедет сохраняться, но при включении mode будет равна 0.
Все понял, что за режим, т.е. теперь будет 6 режимов переключаться они будут еще одной кнопкой и 6 режим переберает остальные пять. Сейчас уже не дома, проверять не на чем, так что завтра добью.
А понял, ты не просто его копируй, а когда развернешь в правом верхнем углу появится панель управления там есть кнопка "<>" "КОД" , нажми ее и вот потом копируй )
)))))) ясно Сейчас буду подключать третию кнопку, потом отпишусь. А последовательность режимов можно любую поставить, ты просто так сделал на свой вкус?
В принципе да, просто первые три последовательные с горящими крайними, четвертый вразнобой с горящими крайними и пятый с меняющимися крайними, мне такая последовательность показалась логичной, но если хочешь поменять, меняй, достаточно поменять только номера case-ов в switch(mode){...}, т.е. само тело case-а можно не переставлять. Пример:
switch(mode){
case 0:
//Первое действие
break;
case 1:
// Второе дейтвие
break;
меняем последовательность:
switch(mode){
case 1:
//Первое действие
break;
case 0:
// Второе дейтвие
break;
Все работает замечательно. Макс, как я уже говорил - ты лучший. Удачи тебе по жизни, крепкого здоровья и всех благ. Моя девушка тебе шлет поцелуй:-) спасибо
Все нормально, только, если хочешь еще поставить кнопку для переключения режимов, то с этих двух эту функцию лучше убрать, выкладывай свой код самого главного режима
#include #define STEP 50 // Шаг в миллисекундах(целое число) #define MIN 50 // Минимальная задержка в миллисекундах(целое число) #define MAX 1000 // Максимальная задержка в миллисекундах(целое число) #define DELAY 8 // Задержка в значения текущей скорости (целое число) #define BUTTON_FAST 2 // прерывание 0 - кнопка "+" #define BUTTON_SLOW 3 // прерывание 1 - кнопка "-" #define LED1 4 // светодиод 1 #define LED2 5 // светодиод 2 #define LED3 6 // светодиод 3 #define LED4 7 // светодиод 4 #define LED5 8 // светодиод 5 первый #define LED6 9 // светодиод 6 последний int Delay, delayold, state, mode, statemax = 0; long millisold; void setup() { Serial.begin(9600); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT); digitalWrite(BUTTON_FAST, HIGH); digitalWrite(BUTTON_SLOW, HIGH); attachInterrupt(0, Faster, FALLING); attachInterrupt(1, Slower, FALLING); Delay = EEPROM.read(0); if(Delay < MIN/STEP || Delay > MAX/STEP){ Delay = 10; EEPROM.write(0, Delay); } mode = EEPROM.read(1); if(mode > 4){ mode = 0; EEPROM.write(0, mode); } millisold = millis(); } void loop() { if(!digitalRead(BUTTON_FAST) && !digitalRead(BUTTON_SLOW)){ mode++; if(mode > 5){ mode = 0; } EEPROM.write(1, mode); Serial.println(mode+1, DEC); delay(200); } if(Delay != delayold){ EEPROM.write(0, Delay); delayold = Delay; Serial.println(Delay*STEP, DEC); } if(millis()-millisold > Delay*STEP){ state++; if(state > statemax){ state = 0; } millisold = millis(); } switch(mode){ case 0: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 3; switch(state){ case 0: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 2: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 3: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; } break; case 1: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 3 + DELAY; switch(state){ case 0: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 2: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 3: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; case 4: digitalWrite(LED4, LOW); break; } break; case 2: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 3 + DELAY; switch(state){ case 0: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED3, HIGH); break; case 2: digitalWrite(LED3, LOW); digitalWrite(LED2, HIGH); break; case 3: digitalWrite(LED2, LOW); digitalWrite(LED4, HIGH); break; case 4: digitalWrite(LED4, LOW); break; } break; case 3: digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); statemax = 3; switch(state){ case 0: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); digitalWrite(LED1, LOW); digitalWrite(LED4, LOW); break; case 1: digitalWrite(LED1, HIGH); digitalWrite(LED4, HIGH); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); break; case 2: digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); digitalWrite(LED1, LOW); digitalWrite(LED4, LOW); break; case 3: digitalWrite(LED1, HIGH); digitalWrite(LED4, HIGH); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); break; } break; case 4: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 18; switch(state){ case 0: digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 2: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 3: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; case 4: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 5: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 6: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 7: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; case 8: digitalWrite(LED4, HIGH); digitalWrite(LED1, HIGH); break; case 9: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 10: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 11: digitalWrite(LED3, HIGH); digitalWrite(LED4, HIGH); break; case 12: digitalWrite(LED4, HIGH); digitalWrite(LED1, HIGH); break; case 13: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 14: break; case 15: case 16: digitalWrite(LED4, HIGH); digitalWrite(LED1, HIGH); break; case 17: digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); break; case 18: digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); break; case 19: digitalWrite(LED3, HIGH); digitalWrite(LED4, HIGH); break; } break; } } void Faster() { Delay--; if(Delay < MIN/STEP){ Delay = MIN/STEP; } } void Slower() { Delay++; if(Delay > MAX/STEP){ Delay = MAX/STEP; } }Подправить можно вот здесь:
mode = EEPROM.read(1); if(mode > 4){ mode = 0; EEPROM.write(0, mode); }сделать >5
Ну на самом деле не только здесь, так у тебя 6 режим не будет сохраняться при выключении, точнее бедет сохраняться, но при включении mode будет равна 0.
Кстати, чтобы код всталлять там есть кнопка " {...}code "
New User посмотрите пожалуйста про вставку программного кода
Выше я поправлю
ok
Все понял, что за режим, т.е. теперь будет 6 режимов переключаться они будут еще одной кнопкой и 6 режим переберает остальные пять. Сейчас уже не дома, проверять не на чем, так что завтра добью.
ok
Макс, когда можно ожидать шестой режим и третью кнопку? Пытаюсь день распланировать
Ближе к вечеру.
И так, кнопку "режим" подключил к 4 выводу и поэтому все светодиоды подвинул и немного поменял очередность режимов:
0. Перебор
1. Перебор с задержкой
2. Ваш
3. 1324 с задеркой(ты добавил)
4. волна
5. Перебор режимов
#include <EEPROM.h> #define STEP 50 // Шаг в миллисекундах(целое число) #define MIN 50 // Минимальная задержка в миллисекундах(целое число) #define MAX 1000 // Максимальная задержка в миллисекундах(целое число) #define DELAY 8 // Задержка в значения текущей скорости (целое число) #define DELAY5 5000 // Задержка 5 режима в миллисекундах(целое число) #define BUTTON_FAST 2 // прерывание 0 - кнопка "+" #define BUTTON_SLOW 3 // прерывание 1 - кнопка "-" #define BUTTON_MODE 4 // кнопка "режим" #define LED1 5 // светодиод 1 #define LED2 6 // светодиод 2 #define LED3 7 // светодиод 3 #define LED4 8 // светодиод 4 #define LED5 9 // светодиод 5 первый #define LED6 10 // светодиод 6 последний int Delay, delayold, state, mode, statemax = 0; long millisold, millisold1; boolean mode5, buttonmodestate = 0; void setup() { Serial.begin(9600); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT); digitalWrite(BUTTON_FAST, HIGH); digitalWrite(BUTTON_SLOW, HIGH); digitalWrite(BUTTON_MODE, HIGH); attachInterrupt(0, Faster, FALLING); attachInterrupt(1, Slower, FALLING); Delay = EEPROM.read(0); if(Delay < MIN/STEP || Delay > MAX/STEP){ Delay = 10; EEPROM.write(0, Delay); } mode = EEPROM.read(1); if(mode > 5){ mode = 0; } EEPROM.write(0, mode); if(mode == 5){ mode5 = 1; mode = 0; millisold1 = millis(); } else{ mode5 = 0; } millisold = millis(); } void loop() { if(!digitalRead(BUTTON_MODE) && !buttonmodestate){ mode = EEPROM.read(1); mode++; if(mode > 5){ mode = 0; } EEPROM.write(1, mode); Serial.println(mode, DEC); delay(50); buttonmodestate = 1; if(mode == 5){ mode5 = 1; mode = 0; millisold1 = millis(); } else{ mode5 = 0; } } if(digitalRead(BUTTON_MODE)){ delay(50); buttonmodestate = 0; } if(Delay != delayold){ EEPROM.write(0, Delay); delayold = Delay; Serial.println(Delay*STEP, DEC); } if(millis()-millisold > Delay*STEP){ state++; if(state > statemax){ state = 0; } millisold = millis(); } if(mode5 && millis()-millisold1 > DELAY5 && state == statemax){ digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); mode++; if(mode > 4){ mode = 0; } millisold1 = millis(); } switch(mode){ case 0: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 3; switch(state){ case 0: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 2: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 3: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; } break; case 1: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 3 + DELAY; switch(state){ case 0: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 2: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 3: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; case 4: digitalWrite(LED4, LOW); break; } break; case 2: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 18; switch(state){ case 0: digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 2: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 3: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; case 4: digitalWrite(LED4, LOW); break; case 5: digitalWrite(LED1, HIGH); break; case 6: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 7: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 8: digitalWrite(LED3, LOW); digitalWrite(LED4, HIGH); break; case 9: digitalWrite(LED4, HIGH); digitalWrite(LED1, HIGH); break; case 10: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 11: digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); break; case 12: digitalWrite(LED3, HIGH); digitalWrite(LED4, HIGH); break; case 13: digitalWrite(LED4, HIGH); digitalWrite(LED1, HIGH); break; case 14: digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); break; case 15: digitalWrite(LED4, HIGH); digitalWrite(LED1, HIGH); break; case 16: digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); break; case 17: digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); break; case 18: digitalWrite(LED3, HIGH); digitalWrite(LED4, HIGH); break; } break; case 3: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); statemax = 3 + DELAY; switch(state){ case 0: digitalWrite(LED4, LOW); digitalWrite(LED1, HIGH); break; case 1: digitalWrite(LED1, LOW); digitalWrite(LED3, HIGH); break; case 2: digitalWrite(LED3, LOW); digitalWrite(LED2, HIGH); break; case 3: digitalWrite(LED2, LOW); digitalWrite(LED4, HIGH); break; case 4: digitalWrite(LED4, LOW); break; } break; case 4: digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); statemax = 3; switch(state){ case 0: digitalWrite(LED5, HIGH); digitalWrite(LED6, HIGH); digitalWrite(LED1, LOW); digitalWrite(LED4, LOW); break; case 1: digitalWrite(LED1, HIGH); digitalWrite(LED4, HIGH); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); break; case 2: digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); digitalWrite(LED1, LOW); digitalWrite(LED4, LOW); break; case 3: digitalWrite(LED1, HIGH); digitalWrite(LED4, HIGH); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); break; } break; } } void Faster() { Delay--; if(Delay < MIN/STEP){ Delay = MIN/STEP; } } void Slower() { Delay++; if(Delay > MAX/STEP){ Delay = MAX/STEP; } }< text>Здесь уже и шестой режим? а есть вариант без цифорок слева 1-319?
да от 0 до 5 всего 6
Всмысле?
Без нумерации строк.. Я их удаляю минут пять)
Всмысле?
А понял, ты не просто его копируй, а когда развернешь в правом верхнем углу появится панель управления там есть кнопка "<>" "КОД" , нажми ее и вот потом копируй )
Я так понял, ты все это время просто копировал и удалял нумерацию ) Перекопируй по нормальному, что бы ненароком лишнего не удалить
)))))) ясно Сейчас буду подключать третию кнопку, потом отпишусь. А последовательность режимов можно любую поставить, ты просто так сделал на свой вкус?
В принципе да, просто первые три последовательные с горящими крайними, четвертый вразнобой с горящими крайними и пятый с меняющимися крайними, мне такая последовательность показалась логичной, но если хочешь поменять, меняй, достаточно поменять только номера case-ов в switch(mode){...}, т.е. само тело case-а можно не переставлять. Пример:
switch(mode){ case 0: //Первое действие break; case 1: // Второе дейтвие break;меняем последовательность:
switch(mode){ case 1: //Первое действие break; case 0: // Второе дейтвие break;Все работает замечательно. Макс, как я уже говорил - ты лучший. Удачи тебе по жизни, крепкого здоровья и всех благ. Моя девушка тебе шлет поцелуй:-) спасибо
Макс, я спаял все.. все аккуратно.
Но у меня терь каждый раз при вкл выкл устройства она начинает с режима на 1 больше.
Если выключил на 2 режиме, то после включения начинает с 3.
Перезалил софт заново отсюда - не помогло
Пробовал даже искуственно писать что то типа mode = mode - 1 тоже не помогло
В чем может быть дело?
А у тебя грузит как надо?
Хелп
А если не питание выключать, а резет нажать тоже самое происходит?
Я понял в чем дело
Я отпаял конденсатор и этот глюк пропал.
Видимо он разряжался..
Но теперь есть дребезг кнопок(
Кондюк припаяй обратно и добавь задержку между 36 и 37 строкой функции setup():
увеличивай значение delay(100); пока не проподет глюк.
Сегодня ближе к ночи попробую.. сенкс
Угу, заработало))