Статьи » Разработки |
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 и посмотреть как работает (не забудьте поставить ограничивающий резистор). Вот как подключено у меня на макетке. Так я выбирал оптимальный вариант работы первого и второго режима. Третий светодиод это от другого проекта, так же как и зумер. Вопросы в комментарии или на форум. Попробую ответить.
Посмотрите еще эти статьи
Управляем вытяжкой на кухне пультом от телевизора на Arduino Вывод картинки на дисплей 128x64 Детектор микронаушников Ethernet shield w5100 таймер включения на веб странице Вывод различных данных на дисплей LCD 128x64 Подключение датчиков газа и дыма серии MQ к Arduino Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 7803. Оценка статьи: 4.5 из 5. Уже оценило 4 читателя |
Всего комментариев: 0 | |