Большинство наших манипуляций с электрическими нагрузками связано лишь с их включением и выключением. Для этого на все сто подходят обычный коммутационные выключатели. Включил - есть питание, выключил – нет! Однако дело осложняется, если перед нами появляются задачи несколько посложнее. Скажем одним коммутатором (выключателем или кнопкой) необходимо включать или выключать несколько нагрузок по очереди. Или у тех же самых нагрузок появляется какой-то алгоритм по питанию. Вот тут электрика и превращается в электронику. Вот тут нам и помогут микроконтроллеры. А так как Arduino это частный случай микроконтроллера в удобной для нас обвязке, то именно его мы и возьмем за базу для реализации функциональной схемы управления одной кнопкой 2 и более устройствами.  Об этом мы собственно и расскажем в нашей статье

Алгоритм для включения отключения 2 нагрузок с помощью Arduino

В нашем случае задачей было включать нагрузку одну за другой «по кругу», то есть первая, вторая. А затем отключать, так же как и включались нагрузки. Вначале первая, потом вторая. Вроде простая задача, но все простое требует порой гениальных решений. Нет, конечно, наше решение не гениально, но к нему тоже надо еще прийти!

Электрическое подключение кнопки и нагрузки

В программке прописано, что управляющая кнопка приходит на 2 пин, а выходные сигналы на 12 и 13 ножке. Для кнопки необходимо установить подтягивающий резистор на 10 К, чтобы не было дребезга контактов.

Код – скетч для управления 2 устройствами с помощью Arduino

1 вариант

Можно разделить весь алгоритм работы по коду на три условия. Вначале ничего не горит, потом есть питание для первой нагрузки, после появляется питание для второй нагрузки. Затем отключается питание для первой нагрузки и после для второй. После этого цикл повторяется сначала.
 Так как у нас Ардуино, то программа заливается через ту же одноименную программку. Скетч для программы можно СКАЧАТЬ скопировав (комментарии в программке-скетче) или посмотреть прямо на сайте...

int flag=0;  // переменная
void setup()    
{       
    pinMode(13, OUTPUT);   // прописываем к каким выводам будет подключена нагрузка
    pinMode(12, OUTPUT);           
} 
void loop() 
{         
     if(digitalRead(2)==HIGH&&flag==0)      //если кнопка нажата    
     // и переменная flag равна 0 , то ... 
     {            
       digitalWrite(12,!digitalRead(12));        flag=1;         // пишется высокий уровень для 12 ножки
        //присваивается значение 1 для переменной флаг         
    delay(800);     } 
if (digitalRead(2)==HIGH&&flag==1)     //если кнопка нажата    
     // и переменная flag равна 1 , то ... 
     { 
           
       digitalWrite(13,!digitalRead(13));        flag=2;         // пишется высокий уровень для 13 ножки
        //присваивается значение 2 для переменной флаг 
        delay(800); 
     }         
      if(digitalRead(2)==HIGH&&flag==2)//если кнопка НЕ нажата      //и переменная flag равна - 2 ,то ... 
{            
       digitalWrite(13,LOW);  //отключаем нагрузки сразу две
       digitalWrite(12,LOW);
     
     }  
 delay(800);     
     {        flag=0;//обнуляем переменную flag      } 
} 


В итоге у нас будет реализована возможность управлять 2 нагрузками. При необходимости программку можно доработать и сделать управление нагрузками кратное количеству свободных выходов на Ардуино.

Видео об управления 2 устройствами с помощью Arduino

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

2 вариант Второй вариант предполагает подключение экрана, на котором будет отображаться информация о включенной нагрузке. Это очень удобно в случае графического отображения информации, а также это одна из первых замашек на то, чтобы сделать меню по нагрузкам или алгоритмам с экраном. Скетч можно СКАЧАТЬ . А видео можно посмотреть. При этом подключение экрана необходимо выполнить согласно инструкций ЗДЕСЬ.