Статьи » Разработки |
2015-04-18 в 19:44 (последнее изменение 2018-02-13 в 22:46)
Решил сделать такой устройство только лишь для эксперимента, попробовать включить несколько светодиодов в качестве нагрузки. Маяк имеет 2 режима работы. В коде подробно расписано как увеличить их число если необходимо. Переключение между режимами осуществляется с помощью тактовой кнопкой. Управляются светодиоды полевыми транзисторами IRL 640 либо IRF 630. Схема подключения тактовых кнопок только такая: Заливаем код программы в Arduino. Код
/*
Милицейский проблесковый светодиодный маяк. Для экспериментов и изменений можно для начала подключить светодиоды маленькие, а после уже подключить IRL 640 либо IRF 630 или аналогичный и поставить светодиоды мощнее либо вообще ленту, что будет удобнее. https://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 и посмотреть как работает (не забудьте поставить ограничивающий резистор). Вот как подключено у меня на макетке. Так я выбирал оптимальный вариант работы первого и второго режима. Третий светодиод это от другого проекта, так же как и зумер. Вопросы в комментарии или на форум. Попробую ответить. Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 8229. Оценка статьи: 4.5 из 5. Уже оценило 4 читателя |
Всего комментариев: 0 | |