Это опять-таки один из первых моих опытов работы с Ардуино. Пока я даже еще помню какой.. Это второй проект! Так вот, во втором проекте, в большинстве случаев, людей учат работать с кнопкой, то есть нажал кнопку, подал напряжение на нагрузку – загорелся светодиод. Отпустил кнопку – светодиод потух. Однако посмотрев подобную тему, я немного был ошарашен, ну что это за проект!? Зачем применять Ардуино и связку из проводов, резисторы, если все на само деле можно реализовать просто обычной цепью через источник питания, кнопку и светодиод. Это и надежнее, дешевле и понятнее и не потребует специальных знаний. Нет, я понимаю, что микроконтроллер Ардуино начинает себя оправдывать лишь с определенных проектов, когда надо выполнять сложные действия вроде как с задержкой с распределением питания и все в таком духе. А вот для того чтобы до этого дойти, необходимо научиться работать с примитивом. Так скажем, что надо пройти не совсем прагматичное, дабы впоследствии воспользоваться возможностями на все сто. Пока я еще нахожусь в сторону баланса когда все было бы проще собрать скажем на той же микросхеме NE555, нежели заморачиваться Ардуинкой и заливать программу для таймера. Однако буду очень надеться, что далее применение в проектах Ардуино начнут себя оправдывать. Хотя уже и сейчас можно начать находить некие плюсы в обычном таймере от Ардуино, он легко настраивается на любое время срабатывания без пайки, просто меняем время в программке. Он может легко инвертировать сигналы от включено к выключено. Он в конце концов может работать сразу по нескольким критериям, если к нему подключить несколько кнопок и к каждой задать свой выход или свое время срабатывания. В общем уже кое-что, так что давайте обо всем этом поподробнее.

Включение нагрузки от кнопки на Arduino UNO

Как я все же не хаял что заниматься проектом с кнопками это все же детство, но пройти через это придется, ведь даже полет в космос начинался с сюрреалистических эскизов на бумаге, пока не оброс чем-то значимым и стоящим, что в итоге подняло в пространство ракету! Так вот, первый вариант будет реализовывать следующий алгоритм работы. Нажимаем кнопку – светодиод горит. Отпускаем- гаснет. Вначале подключаем все физически, а потом начинаем работать с программой. Принципиальная схема подключения будет выглядеть так.

P.S. Схема подразумевает подачу положительного потенциала на вход от кнопки. Сопротивление 10 кОм применено с тем, дабы в отсутствии сигнала от кнопки, на проводе не появлялись наводки и не было ложных срабатываний. Если убрать цепь с сопротивлением, то на входе возможно появление логической 1 просто от наводок, что сделает работу схемы и программы нестабильной.
Затем включаем программку «Ардуино» о том, где ее найти и как скачать в статье «Подключение Arduino R3 MEGA328P CH340G (как запустить и сделать первый проект)» Подключаем Ардуино для заливки, все это тоже в той же статье. Теперь заливаем вот этот код, просто копируем его и вставляем в окно, а потом жмем кнопку-стрелку.

int button = 2;
int led = 13; // назначаем константы

void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT); // инициализируем что вход, что выход
}

void loop(){
if (digitalRead(button) == HIGH) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW); // это условие при котором высокий потенциал на кнопке зажигает светодиод во всех других случаях светодиод не горит

}


}




Все ждем пока все зальется в микроконтроллер и уже можно пробовать нажимать на кнопку. Если никаких проблем при загрузке не возникло, то все будет как я и говорил. Нажимаем на кнопку – горит, отпускам - гаснет. Вот такой примитив! Что же, теперь попробуем хоть малость усовершенствовать программу и сделать из нее таймер, то есть нажал на кнопку  светодиод включился скажем на 10 секунд.

Включение таймера от кнопки на Arduino UNO

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

Код тоже почти тот же, разве что после включения светодиода делаем задержку для последующего выполнения затухания, применяя функцию delay. Можете сравнить с предыдущим кодом, все один в один, разве добавилась задержка.

int button = 2;
int led = 13; // назначаем константы

void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT); // инициализируем что вход, что выход
}

void loop(){
if (digitalRead(button) == HIGH) {
digitalWrite(led, HIGH); delay(10000);              // ждем 10 сек
}
else {
digitalWrite(led, LOW); // это условие при котором высокий потенциал на кнопке зажигает светодиод во всех других случаях светодиод не горит при этом таймер встроен в область условия

}


}




Вот собственно так и родился проект и программка таймера. Плюсы такого таймер перед тем же таймером собранным без микроконтроллера конечно есть. Это возможность быстро поменять время задержки (меняем цифру 10000), инвертировать включение выключение нагрузки, то есть сделать чтобы она не включалась, а наоборот выключалось, для эnого надо поменять местами значения HIGH и  LOW. Можно сделать несколько таймеров, от разных кнопок, если задать разные входы для нескольких кнопок и подключить их.

Подводя итог…

Можно сказать, что проект принес свои результаты. Явной пользой данного проекта будет возможность понять как формируется программа. Что есть константы описываемые в программе, есть инициализация всего того что подключено к контроллеру, есть алгоритм работы. Еще здесь же можно провести аналогию и с тем, как же будут впоследствии подключаться датчик и приводы, ведь датчик имеет примерно такой же сигнал, как и положительный потенциал с кнопки, а привод также может быть управляем низкоточным сигналом, сродни светодиоду.
  Единственным, чем я остался не удовлетворен, так это тем, что нагрузкой в данном случае служит светодиод. Что толку от него, когда хотелось бы управлять силовыми элементами в электрической цепи? Скажем, включать мощные осветительные лампы, нагреватели, насосы или прочие электроприборы. Поэтому надо будет подготовить статью о том, как из низкоточного управляющего сигнала получить мощный управляющий. Видимо это будет темой одной из ближайших моих статьей.

Видео про таймер на Ардуино

Комментарии  

+3 #1 eldar_301 12.12.2018 14:59
супер отлично работает напрежение после светодиода можно подьнять