»»

Милицейский проблесковый маяк на Arduino

2015-04-18 в 19:44

Решил сделать такой устройство только лишь для эксперимента, попробовать включить несколько светодиодов в качестве нагрузки. Маяк имеет 2 режима работы. В коде подробно расписано как увеличить их число если необходимо. Переключение между режимами осуществляется с помощью тактовой кнопкой. Управляются светодиоды полевыми транзисторами IRL 640 либо IRF 630. Схема подключения тактовых кнопок только такая:

Заливаем код программы в Arduino.

Код
/*
Милицейский проблесковый светодиодный маяк.
Для экспериментов и изменений можно для начала подключить светодиоды маленькие, а после
уже подключить IRL 640 либо IRF 630 или аналогичный и поставить светодиоды мощнее либо вообще ленту, что будет удобнее.
http://tehnopage.ru
*/
int regim = 1;
int flag = 0;

void setup()
{
  pinMode(10, OUTPUT); //10 пин как выход на IRL640 первого маяка
  pinMode(9, OUTPUT);  //9 пин как выход на IRL640 второго маяка
  pinMode(2, INPUT);   //2 пин вход для кнопки
}
void loop()
 {
    if (digitalRead(2) == HIGH && flag == 0) //если кнопка на входе 2 нажата и перемення flag равна 0 , то ...
    {
    regim++;
    flag = 1;
    //это нужно для того что бы с каждым нажатием кнопки происходило только одно действие, плюс защита от "дребезга"  100%
    
    if (regim > 2) //здесь у нас написано количество режимов. Количество режимов ограничено объемом памяти.
    {
    regim = 1; //так как мы используем только одну кнопку,
      // то переключать режимы будем циклично
     }
   }
  if (digitalRead(2) == LOW && flag == 1) //если кнопка на входе 2 НЕ нажата и переменная flag равна - 1 ,то ...
  {
  flag = 0; //обнуляем переменную
  }
    if (regim == 1) //первый режим (будет включаться при подачи питания)
   {
    digitalWrite(9, HIGH); //включаем правый канал
    delay(50);             //пауза 50 мллисекунд
    digitalWrite(9, LOW);  //выключаем правый канал
    delay(50);
    digitalWrite(9, HIGH);
    delay(50);
    digitalWrite(9, LOW);
    delay(50);
    digitalWrite(9, HIGH);
    delay(50);
    digitalWrite(9, LOW);
    delay(50);
    digitalWrite(9, HIGH);
    delay(50);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    delay(50);
    digitalWrite(10, LOW);
    delay(50);
    digitalWrite(10, HIGH);
    delay(50);
    digitalWrite(10, LOW);
    delay(50);
    digitalWrite(10, HIGH);
    delay(50);
    digitalWrite(10, LOW);
    delay(50);
    digitalWrite(10, HIGH);
    delay(50);
    digitalWrite(10, LOW);
    }
      if (regim == 2) //второй режим
     {
      digitalWrite(10, HIGH);
      delay(500);
      digitalWrite(10, LOW);
      digitalWrite(9, HIGH);
      delay(500);
      digitalWrite(9, LOW);
     }
 }

 

Залили? Теперь подключаем по схеме. Можно для начала вместо IRL640 либо IRF 630 поставить светодиоды по одному на пин 9 и 10 и посмотреть как работает (не забудьте поставить ограничивающий резистор).

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

Третий светодиод это от другого проекта, так же как и зумер. Вопросы в комментарии или на форум. Попробую ответить.

Если Вы заметили ошибку, нажмите Ctrl+Enter и сообщите нам.
Оценка статьи: 5.0/5 Уже оценило 3
Всего комментариев: 0
Добавить комментарий

Вход на сайт

Яндекс.Метрика Рейтинг@Mail.ru Проверка орфографии