Контроллер освещения модели

Собачкин
Offline
Зарегистрирован: 26.10.2015

Привет, форумчане! Кто может помочь написать прошивку и обьяснить как это все работает?
Очень хочу однц штуку, но программирование мне не дается, хотя примерно понимаю как писать программу, но конкретно ничего сделать увы не выходит. !!
Занимаюсь стендовым моделизмом и появилась необходимость сделать устройство которое могло бы имитировать мигалку и поворотники. На одной кнопке включение поворотников, на второй включение мигалки, а на третей головной свет. Желательно это все запитать от 3в.

Собачкин
Offline
Зарегистрирован: 26.10.2015

Апдейт. Предыдущее сообщение отредактировать не могу, там опечатка, питание нужно 9в.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

зачем контроллер, три кнопки и три режима или я чего-то не пойму.?

Если бы от одной кнопки все хотели запитать или что по сложнее а так это задачка не сложнее blink примера((

Собачкин
Offline
Зарегистрирован: 26.10.2015

3 кнопки которые в режиме триггера включают свои режимы, не зависимо друг от друга. Устройства на микроконтроллерах повторял, но написать прошивку, для меня как полететь в космос :(

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

ясно.

начните, соберите на макетке ардуино и три кнопки и светодиоды, что не получится напишите подскажем и подправим.

Если хотите просто чтоб по вашему алгоритму написали программу и нарисовали схему то в ветку ищу заказчика!

Собачкин
Offline
Зарегистрирован: 26.10.2015

Посидел, попробовал разобраться, и кое что понял! Прошивку написал для про микро. Доступ к плате будет будет через неделю, а то и позже. Из знающих, кто может проверить прошивку на предмет правильности? Есть 7 режимов которые переключаються одной кнопкой (меньше плата и меньше деталей), собственно в комментариях к коду они описаны.

/* Ардуино про микро, контроллер освещения стендовой модели на 7 режимов
 *  Режим 1 - Основной свет
 *  Режим 2 - Поворотники
 *  Режим 3 - Основной свет и поворотники
 *  Режим 4 - Мигалка
 *  Режим 5 - Строб, мигалка
 *  Режим 6 - Мигалка, поворотники, свет
 *  Режим 7 - Строб, мигалка, поворотники, свет
 */
int MAIN_LedPin = 4; // Подключаем основной свет к порту 4
int TURN_LedPin = 5; // Подключаем поворотник к порту 5
int FLASHR_LedPin = 6; // Подключаем красный светодиод мигалки к порту 6
int FLASHB_LedPin = 7; // Подключаем синий светодиод мигалки к порту 7
int BUTPIN = 8; // Подключаем кнопку к выходу 8
int flag = 0; // флаг состояния
int regim = 0; // Переключалка

void setup()
{
  pinMode(MAIN_LedPin, OUTPUT);
  pinMode(TURN_LedPin, OUTPUT);
  pinMode(FLASHR_LedPin, OUTPUT);
  pinMode(FLASHB_LedPin, OUTPUT);
}

void loop()
{
  if (digitalRead(BUTPIN) == HIGH && flag == 0)
  {
    regim ++;
    flag = 1;

    if (regim > 7) // Если номер режима превышает требуемого
    { // то отсчет начинается с нуля
      regim = 0;
    }
  }

  if (digitalRead(BUTPIN) == LOW && flag == 1)
  {
    flag = 0;
  }

  // ======= Вполняем задачу при выборе режима =======
  // РЕЖИМ 0: Выключено
  if (regim == 0)
  {
    digitalWrite(MAIN_LedPin, LOW);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
  }

  // РЕЖИМ 1: Основной свет
  if (regim == 1)
  {
    digitalWrite(MAIN_LedPin, HIGH);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
  }

  // РЕЖИМ 2: Поворотники
  if (regim == 2)
  {
    digitalWrite(MAIN_LedPin, LOW);
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
    digitalWrite(MAIN_LedPin, LOW);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
  }

  // РЕЖИМ 3: Основной свет и поворотники
  if (regim == 3)
  {
    digitalWrite(MAIN_LedPin, HIGH);
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
    digitalWrite(MAIN_LedPin, HIGH);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
  }

  // РЕЖИМ 4: Мигалка
  if (regim == 4)
  {
    digitalWrite(MAIN_LedPin, LOW);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
    digitalWrite(MAIN_LedPin, LOW);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, HIGH);
    delay(1000);
  }

  // РЕЖИМ 5: Мигалка строб
  if (regim == 5)
  {
    digitalWrite(MAIN_LedPin, LOW); // Мигаем красным на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, LOW); // Гасим красный на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, LOW); // Зажигаем красный на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, LOW); // Гасим красный на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000); // Ждем секунду
    digitalWrite(MAIN_LedPin, LOW); // Зажигаем синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, HIGH);
    delay(250);
    digitalWrite(MAIN_LedPin, LOW); // Гасим синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, LOW); // Зажигаем синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, LOW); // Гасим синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
  }
  
  // РЕЖИМ 6: Мигалка, основной и поворотники
  if (regim == 6)
  {
    digitalWrite(MAIN_LedPin, HIGH);
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
    digitalWrite(MAIN_LedPin, HIGH);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, HIGH);
    delay(1000);
  }
  
    // РЕЖИМ 7: Мигалка строб, поворотник и свет
  if (regim == 7)
  {
    digitalWrite(MAIN_LedPin, HIGH); // Мигаем красным на 0,25 сек
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, HIGH); // Гасим красный на 0,25 сек
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, HIGH); // Зажигаем красный на 0,25 сек
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, HIGH); // Гасим красный на 0,25 сек
    digitalWrite(TURN_LedPin, HIGH);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000); // Ждем секунду
    digitalWrite(MAIN_LedPin, HIGH); // Зажигаем синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, HIGH);
    delay(250);
    digitalWrite(MAIN_LedPin, HIGH); // Гасим синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, HIGH); // Зажигаем синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, HIGH);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(250);
    digitalWrite(MAIN_LedPin, HIGH); // Гасим синий на 0,25 сек
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
    delay(1000);
  }
}

 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Советую собрать в симуляторе, типа Протеус, и запустить, но по моему дальше (РЕЖИМ 2: Поворотники) программа не пройдет,  delay(1000); будет тормозить.  

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Собачкин пишет:

Посидел, попробовал разобраться, и кое что понял! Прошивку написал для про микро. Доступ к плате будет будет через неделю, а то и позже. ....

скомпилировалось без ошибок,

выделю 15 мин вечером подключу 4диода и кнопку проверю.

Собачкин
Offline
Зарегистрирован: 26.10.2015

Спасибо большое. Если не затруднит попробуйте пожалуйста. 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Вот так без delay() должно работать но симуляторе не проверял

/* Ардуино про микро, контроллер освещения стендовой модели на 7 режимов
 *  Режим 1 - Основной свет
 *  Режим 2 - Поворотники
 *  Режим 3 - Основной свет и поворотники
 *  Режим 4 - Мигалка
 *  Режим 5 - Строб, мигалка
 *  Режим 6 - Мигалка, поворотники, свет
 *  Режим 7 - Строб, мигалка, поворотники, свет
 */
int MAIN_LedPin = 4; // Подключаем основной свет к порту 4
int TURN_LedPin = 5; // Подключаем поворотник к порту 5
int FLASHR_LedPin = 6; // Подключаем красный светодиод мигалки к порту 6
int FLASHB_LedPin = 7; // Подключаем синий светодиод мигалки к порту 7
int BUTPIN = 8; // Подключаем кнопку к выходу 8
int flag = 0; // флаг состояния
int regim = 0; // Переключалка
unsigned long pause1 = 0;
int temp = 1000;
int var = 0;

void setup()
{
  pinMode(MAIN_LedPin, OUTPUT);
  pinMode(TURN_LedPin, OUTPUT);
  pinMode(FLASHR_LedPin, OUTPUT);
  pinMode(FLASHB_LedPin, OUTPUT);
}

void loop()
{
  if (digitalRead(BUTPIN) == HIGH && flag == 0)
  {
    regim ++;
    temp = 250;
    flag = 1;
    var = 1;
    pause1 = millis();

    if (regim > 7) // Если номер режима превышает требуемого
    { // то отсчет начинается с нуля
      regim = 0;
    }
  }

  if (digitalRead(BUTPIN) == LOW && flag == 1)
  {
    flag = 0;
  }

  // ======= Вполняем задачу при выборе режима =======
  // РЕЖИМ 0: Выключено
  if (regim == 0)
  {
    digitalWrite(MAIN_LedPin, LOW);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
  }

  // РЕЖИМ 1: Основной свет
  if (regim == 1)
  {
    digitalWrite(MAIN_LedPin, HIGH);
    digitalWrite(TURN_LedPin, LOW);
    digitalWrite(FLASHR_LedPin, LOW);
    digitalWrite(FLASHB_LedPin, LOW);
  }

  // РЕЖИМ 2: Поворотники
  if (regim == 2)
  {
    if (millis() - pause1 >= temp)
    {
      temp = 1000;
      pause1 = millis();
      switch (var) {
        case 1:
          digitalWrite(MAIN_LedPin, LOW);
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);//выполняется, когда var равно 1
          var = 2;
          break;
        case 2:
          digitalWrite(MAIN_LedPin, LOW);
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);//выполняется когда  var равно 2
          var = 1;
          break;

      }
    }
  }
  // РЕЖИМ 3: Основной свет и поворотники
  if (regim == 3)
  {
    if (millis() - pause1 >= temp)
    {
      temp = 1000;
      pause1 = millis();
      switch (var) {
        case 1:
          digitalWrite(MAIN_LedPin, HIGH);
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 2;
          break;
        case 2:
          digitalWrite(MAIN_LedPin, HIGH);
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 1;
          break;
      }
    }
  }

  // РЕЖИМ 4: Мигалка
  if (regim == 4)
  {
    if (millis() - pause1 >= temp)
    {
      temp = 1000;
      pause1 = millis();
      switch (var) {
        case 1:
          digitalWrite(MAIN_LedPin, LOW);
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 2;
          break;
        case 2:
          digitalWrite(MAIN_LedPin, LOW);
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, HIGH);
          var = 1;
          break;
      }
    }
  }

  // РЕЖИМ 5: Мигалка строб
  if (regim == 5)
  {
    if (millis() - pause1 >= temp)
    {
      temp = 250;
      pause1 = millis();
      switch (var) {
        case 1:
          digitalWrite(MAIN_LedPin, LOW); // Мигаем красным на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 2;
          break;
        case 2:
          digitalWrite(MAIN_LedPin, LOW); // Гасим красный на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 3;
          break;
        case 3:
          digitalWrite(MAIN_LedPin, LOW); // Зажигаем красный на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 4;
          break;
        case 4:
          digitalWrite(MAIN_LedPin, LOW); // Гасим красный на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          temp = 1000;
          var = 5;
          break;
        case 5:
          digitalWrite(MAIN_LedPin, LOW); // Зажигаем синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, HIGH);
          temp = 250;
          var = 6;
          break;
        case 6:
          digitalWrite(MAIN_LedPin, LOW); // Гасим синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 7;
          break;
        case 7:
          digitalWrite(MAIN_LedPin, LOW); // Зажигаем синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 8;
          break;
        case 8:
          digitalWrite(MAIN_LedPin, LOW); // Гасим синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          temp = 1000;
          var = 1;
          break;
      }

    }

  }

  // РЕЖИМ 6: Мигалка, основной и поворотники
  if (regim == 6)
  {
    if (millis() - pause1 >= temp)
    {
      temp = 1000;
      pause1 = millis();
      switch (var) {
        case 1:
          digitalWrite(MAIN_LedPin, HIGH);
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 2;
          break;
        case 2:
          digitalWrite(MAIN_LedPin, HIGH);
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, HIGH);
          var = 1;
          break;

      }
    }
  }

  // РЕЖИМ 7: Мигалка строб, поворотник и свет
  if (regim == 7)
  {
    if (millis() - pause1 >= temp)
    {
      temp = 250;
      pause1 = millis();;
      switch (var) {
        case 1:
          digitalWrite(MAIN_LedPin, HIGH); // Мигаем красным на 0,25 сек
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 2;
          break;
        case 2:
          digitalWrite(MAIN_LedPin, HIGH); // Гасим красный на 0,25 сек
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 3;
          break;
        case 3:
          digitalWrite(MAIN_LedPin, HIGH); // Зажигаем красный на 0,25 сек
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 4;
          break;
        case 4:
          digitalWrite(MAIN_LedPin, HIGH); // Гасим красный на 0,25 сек
          digitalWrite(TURN_LedPin, HIGH);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          temp = 1000;
          var = 5;
          break;
        case 5:
          digitalWrite(MAIN_LedPin, HIGH); // Зажигаем синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, HIGH);
          var = 6;
          break;
        case 6:
          digitalWrite(MAIN_LedPin, HIGH); // Гасим синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 7;
          break;
        case 7:
          digitalWrite(MAIN_LedPin, HIGH); // Зажигаем синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, HIGH);
          digitalWrite(FLASHB_LedPin, LOW);
          var = 8;
          break;
        case 8:
          digitalWrite(MAIN_LedPin, HIGH); // Гасим синий на 0,25 сек
          digitalWrite(TURN_LedPin, LOW);
          digitalWrite(FLASHR_LedPin, LOW);
          digitalWrite(FLASHB_LedPin, LOW);
          temp = 1000;
          var = 1;
          break;
      }
    }
  }
}

 

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Собачкин пишет:

Посидел, попробовал разобраться, и кое что понял! Прошивку написал для про микро. Доступ к плате будет будет через неделю, а то и позже. Из знающих, кто может проверить прошивку на предмет правильности? Есть 7 режимов которые переключаються одной кнопкой (меньше плата и меньше деталей), собственно в комментариях к коду они описаны.

Залил ваш скетч в ардуино нано, добавил вывод в сериал переменной regim чтоб понимать какой режим отрабатывается.

Режимы работают все, но начиная со второго из-за пауз делей кнопку переключения нужно держать больше секунды нажатой чтоб переключить.

Сниму на видео чтоб сами оценили правильно мигают или нет.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

vosara пишет:

Вот так без delay() должно работать но симуляторе не проверял

Респект.

Все переключения режимов работают.

Задержек в нажатии кнопки нет и дребезга тоже.

Залил ваш скетч в ардуино нано, добавил вывод в сериал переменной regim чтоб понимать какой режим отрабатывается.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Снял на видео как работают оба скетча.

https://youtu.be/6sSVXt6pFHI

Собачкин
Offline
Зарегистрирован: 26.10.2015

vosara пишет:

Вот так без delay() должно работать но симуляторе не проверял

Спасибо за рабочий код.

 

bodriy2014 пишет:

Снял на видео как работают оба скетча.

https://youtu.be/6sSVXt6pFHI

 Спасибо за видео.

Контроллер сделан и скоро займет свое место в модели :)

Modeller
Offline
Зарегистрирован: 17.07.2019

Всем привет!

Друзья, помогите немного видоизменить данный код. Убрать ненужные режимы и немного подкорректировать текущий код я в силах. Но организовать еще дополнительные плюшки, боюсь не смогу.

Собственно выношу на обсуждение :)

Как реализовать включение по длительному нажатию на кнопу, а переключение режимов по короткому? Выручайте :)

1.Длительное нажатие (3 сек)– включение.

2. Короткое нажатие – переключение режимов.

А. Включен режим 1.

Б. Включен режим 2.

В. Включен режим 1 и 2.

3. После режима В включается режим А, и так по кругу.

4. При повторном длительном нажатии все выключаем.

Пункты 2 и 3 я могу сделать сам :)))))

Есть ли смысл для выключения устройства переходить в спящий режим? Насколько я понял, если делать на плате с юсб обвязкой, то особой экономии не будет, но если делать например на pro mini то можно сэкономить заряд аккумулятора. Кто что думает?