Как подключить кнопку к Arduino для создания счетчика нажатий. Какую схему подключения выбрать — прямую или инвертированную. Как защититься от дребезга контактов кнопки. Как запрограммировать счетчик нажатий на Arduino.
Подключение кнопки к Arduino: прямая и инвертированная схемы
При создании счетчика нажатий кнопки на Arduino первый вопрос, который возникает — как правильно подключить кнопку. Существует два основных варианта подключения:
- Прямое подключение — кнопка соединяет вход Arduino с плюсом питания
- Инвертированное подключение — кнопка соединяет вход Arduino с землей
Какой же вариант лучше выбрать? Давайте разберем преимущества и недостатки каждого.
Прямое подключение кнопки
При прямом подключении схема выглядит следующим образом:
- Один контакт кнопки подключается к входу Arduino
- Второй контакт кнопки подключается к +5В
- Подтягивающий резистор 10-100 кОм подключается между входом Arduino и GND
Преимущества такой схемы:
- При нажатии кнопки на входе Arduino будет высокий уровень (логическая 1), что кажется более логичным
- Не требуется инвертировать сигнал программно
Недостатки:
- При замыкании проводов возможно короткое замыкание между +5В и GND
- Требуется внешний подтягивающий резистор
Инвертированное подключение кнопки
При инвертированном подключении схема будет такой:
- Один контакт кнопки подключается к входу Arduino
- Второй контакт кнопки подключается к GND
- Подтягивающий резистор 10-100 кОм подключается между входом Arduino и +5В
Преимущества:
- Более безопасно — нет риска короткого замыкания при повреждении проводов
- Можно использовать встроенную подтяжку входов Arduino (режим INPUT_PULLUP)
Недостатки:
- При нажатии кнопки на входе будет низкий уровень (логический 0)
- Требуется инвертировать сигнал программно
Несмотря на кажущуюся нелогичность, инвертированное подключение используется чаще из-за большей безопасности и возможности использовать встроенную подтяжку Arduino. Поэтому для счетчика нажатий рекомендуется использовать именно такую схему.
Защита от дребезга контактов кнопки
При нажатии механической кнопки ее контакты не замыкаются мгновенно. В течение нескольких миллисекунд происходят многократные замыкания и размыкания — так называемый дребезг контактов. Это может привести к ложным срабатываниям счетчика.
Существует два основных способа устранить дребезг:
Аппаратный способ защиты от дребезга
Самый простой вариант — подключить параллельно кнопке конденсатор небольшой емкости (100-1000 пФ). Он будет сглаживать кратковременные колебания напряжения при замыкании контактов.
Программный способ защиты от дребезга
В программе можно реализовать задержку между опросами состояния кнопки. Например:
- Считать состояние кнопки
- Подождать 50 мс
- Повторно считать состояние
- Если оба раза состояние одинаковое — кнопка действительно нажата
Такой способ более гибкий и не требует дополнительных компонентов. Поэтому для счетчика нажатий на Arduino рекомендуется использовать именно программный метод устранения дребезга.
Программирование счетчика нажатий на Arduino
Теперь, когда мы определились со схемой подключения, можно приступать к программированию счетчика. Рассмотрим базовый алгоритм:
- Инициализируем переменную-счетчик нажатий
- В цикле постоянно опрашиваем состояние кнопки
- При обнаружении нажатия (с защитой от дребезга) увеличиваем счетчик
- Выводим текущее значение счетчика
Вот пример простой реализации на Arduino:
«`cpp const int BUTTON_PIN = 2; // Пин подключения кнопки const int DEBOUNCE_DELAY = 50; // Задержка для защиты от дребезга, мс int buttonState; // Текущее состояние кнопки int lastButtonState = HIGH; // Предыдущее состояние кнопки int buttonPresses = 0; // Счетчик нажатий unsigned long lastDebounceTime = 0; // Время последнего изменения состояния void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); // Используем встроенную подтяжку Serial.begin(9600); } void loop() { int reading = digitalRead(BUTTON_PIN); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() — lastDebounceTime) > DEBOUNCE_DELAY) { if (reading != buttonState) { buttonState = reading; if (buttonState == LOW) { buttonPresses++; Serial.print(«Нажатий: «); Serial.println(buttonPresses); } } } lastButtonState = reading; } «`Давайте разберем ключевые моменты этого кода:
- Используется встроенная подтяжка входа (INPUT_PULLUP)
- Реализована защита от дребезга с помощью задержки
- Счетчик увеличивается только при переходе кнопки в нажатое состояние
- Значение счетчика выводится в Serial Monitor
Улучшения базового счетчика нажатий
Базовая версия счетчика уже работоспособна, но ее можно улучшить несколькими способами:
Добавление режима сброса
Можно добавить возможность сбрасывать счетчик в ноль при длительном удержании кнопки. Для этого нужно отслеживать время нажатия и при превышении определенного порога обнулять счетчик.
Сохранение значения в EEPROM
Чтобы значение счетчика не сбрасывалось при отключении питания, его можно сохранять в энергонезависимую память EEPROM. Запись нужно производить не при каждом нажатии, а с некоторым интервалом, чтобы не исчерпать ресурс памяти.
Вывод на дисплей
Для удобства можно выводить значение счетчика на LED или LCD дисплей, подключенный к Arduino. Это позволит видеть текущее значение без использования компьютера.
Мультиплексирование входов
Если нужно сделать несколько независимых счетчиков, можно использовать технику мультиплексирования для подключения нескольких кнопок к минимальному числу входов Arduino.Области применения счетчика нажатий
Счетчик нажатий кнопки на Arduino может найти применение во многих проектах:
- Подсчет посетителей помещения
- Учет производимой продукции на конвейере
- Счетчик нажатий для тренировки мышц пальцев
- Игровой контроллер для аркадных игр
- Система голосования или опросов
Простота реализации и широкие возможности для модификации делают счетчик нажатий отличным учебным проектом для освоения работы с Arduino.
Заключение
Мы рассмотрели основные аспекты создания счетчика нажатий кнопки на Arduino:
- Варианты подключения кнопки — прямое и инвертированное
- Способы защиты от дребезга контактов
- Базовый алгоритм программирования счетчика
- Возможные улучшения базовой версии
- Области применения такого устройства
Теперь вы можете самостоятельно реализовать счетчик нажатий и адаптировать его под свои задачи. Экспериментируйте с кодом, добавляйте новые функции и используйте полученные знания в более сложных проектах на Arduino!
Счетчик нажатий кнопки
Портабельна, можно запускать с флешки Сперва нужно выбать пункт «All the above keys» и нажать кнопку «Add keys to list», затем начать мониторинг нажатий, нажав кнопку «Start monitoring» edit log. А я уже написал. Пару лет назад И нажатия клавишь секёт, и клики мышинные Топикстартер, куда отправить? Пиши мыло в ПМ.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Эксперимент 14. Счётчик нажатий
- Электронный счетчик нажатий на кнопку
- Счетчик нажатия на кнопку
- Счетчик нажатия на кнопку
- Счетчик нажатия кнопки
- Эксперимент 14. Счётчик нажатий
- Форум по микроконтроллерам: Счётчик нажатий на кнопку — Форум по микроконтроллерам
- Счетчик нажатия кнопки
- Как заставить счетчик считать нажатия кнопок в форме?
- Схема счетчика нажатия на кнопку
Эксперимент 14. Счётчик нажатий
Как сделать чтобы счетчик считал нажатия нужных кнопок? Всем привет. У меня есть массив кнопок, создан динамически. Не получается сделать, чтобы при Как написать счетчик кликов для кнопки? Кому не трудно, нужна помощь Нужна помощь. Нужно: при первом нажатии клавиши Например F1 присваивать Label Обработка нажатия кнопки. Кнопку кикаешь, на чекбоксе появляется галочка, еще раз кликаеш, Обработчик нажатия кнопки Здравствуйте!
Помогите, пожалуйста, с решением задачки или дайте ссылку на материал по теме. Посчитать без нажатия кнопки Здравствуйте! Как сделать, чтоб когда я ввожу градусы в цельсиях , мне сразу одновременно Блоги программистов и сисадминов. Vkontakte ,. Facebook , Twitter.
Тесты Блоги Социальные группы Все разделы прочитаны. Просмотров Ответов Метки нет Все метки. Лучшие ответы 2. Сообщение: Сообщение: QA Эксперт. Сохранять счетчик в файл и считывать его значение при запуске программы. Подскажи как это реализовать. Завершенные тесты: 1. Сообщение было отмечено ЛеонЛеонов как решение. D , а че текстовый файл? Да ну, возиться с типизированными файлами для того, чтобы одно число-то записать Сообщение от D DenNik , подскажите как будет через file of integer.
Да так же, кроме этого. DenNik , а чем текстовый файл так не понравился? Именно в данном случае, разницы ведь нет D , подскажи еще пожалуйста. Сообщение от ЛеонЛеонов. На каждой кнопке пишем Delphi 1 Form1. Puporev , вставил это Delphi 1 Form1. Delphi 1 Label1. В коде кнопки на форме 1 должно быть Delphi 1 2 3 4 5 6 7 8 9 procedure TForm1.
Delphi 1 Form1. ClickCountToFile ;. Answers Эксперт. Опции темы. Реклама — Обратная связь. Регистрация Восстановить пароль. Все разделы прочитаны. Счетчик нажатия кнопки Ответов 18 Метки нет Все метки Вот пишу код: Delphi. Ответы с готовыми решениями: Как сделать чтобы счетчик считал нажатия нужных кнопок?
Сообщение было отмечено ЛеонЛеонов как решение Решение Delphi. Сообщение от D возиться с типизированными файлами для того, чтобы одно число-то записать DenNik , подскажите как будет через file of integer Сообщение от ЛеонЛеонов чтобы обе кнопки работали независимо Ну или делать 2 файла и для каждой кнопки прописывать свой файл, либо что правильней работать с одним файлом более сложной структуры, которую Вы сами должны разработать Вы же программист!
Ну или прописывайте тут более четкое техзадание В общем, напишите задание так, как оно Вам было поставлено, а не так, как Вы это видите На каждой кнопке пишем Delphi. Puporev , вставил это Delphi. В коде кнопки на форме 1 должно быть Delphi. Искать еще темы с ответами Или воспользуйтесь поиском по форуму:.
КиберФорум — форум программистов, компьютерный форум, программирование.
Электронный счетчик нажатий на кнопку
Без описания. Поиск в теме Версия для печати. Доброго времени суток. Без вступления перейду сразу к вопросу: Пытаюсь сделать так, чтобы при каждом нажатии на кнопку без фиксации переменная, отвечающая за задержку при мигании светодиодом увеличивалась на какое либо постоянное значение. После сбрасывалась по новой на 0.
jQuery Счётчик кликов. Пример А здесь счётчик кликов выводит результат. Сначала создал в HTML-коде три кнопки с разным текстом, на которых и.
Счетчик нажатия на кнопку
Изначально собирался написать статью о фильтрации дребезга кнопки, подключенной к контроллеру Arduino при помощи конденсатора, в результате у меня самого дребезга так и не получилось, а получилось стопроцентное срабатывание кнопки, какой она должна быть в идеале. При этом не пришлось задействовать ни конденсаторов, ни программных фильтров — всё и так прекрасно работает. В интернете блуждает множество схем подключения кнопок к дискретным входам Arduino. На них чаще всего предлагается кнопку соединить с нулём питания и дискретным входом, к которому ещё подвести резистор 10 кОм, соединенный с плюсом питания 5 В. Этот резистор позволяет контроллеру однозначно идентифицировать отсутствие нажатия на кнопку. Иначе без резистора на входе может появляться неоднозначный логический уровень, особенно при нестабильном источнике питания или длинных кабелях, соединяющих кнопку с контроллером. При возникновении таких негативных факторов, на входе вообще может возникать пульсирующее напряжение.
Счетчик нажатия на кнопку
Пытаюсь сделать так, чтобы при каждом нажатии на кнопку без фиксации переменная, отвечающая за задержку при мигании светодиодом увеличивалась на какое либо постоянное значение. Проблему решил с использованием внешних прерываний, вот только одна проблема, светодиод или сбрасывается в обратное значение, если переменную объявляет строка volatile unsigned char, при достижении какого либо значения переменной, либо останавливается на каком либо значении. В общем как можно расширить диапазон изменения задержки? Мы принимаем формат Sprint-Layout 6!
Допустим, вы, наконец, заставили кнопку работать и теперь хотите задать некое действие, которое будет использовать количество нажатий на эту кнопку.
Счетчик нажатия кнопки
Перейти к содержимому. Отправлено 08 Сентябрь — Отправлено 09 Сентябрь — Alex 09 Сентябрь — писал:. Отправлено 12 Сентябрь — Система для сообществ IP.
Эксперимент 14. Счётчик нажатий
На этой тестовой странице сайта проверяю интересную возможность использования jQuery для подсчёта кликов и, что особенно интересно, по каждой из тестовых кнопок отдельно! Работу управляющего скрипта и ядра jQuery показываю сразу. Подробности о создании — под рисунками мотоциклов. Работу скрипта счётчика можно увидеть сразу, если кликнуть по любой из трёх тестовых кнопок. Для повторного просмотра работы скрипта счётчика, страницу нужно перезагрузить.
Шужна программа или скрипт счетчика нажатий т.е. чтобы на мониторе при нажатии на кнопку (пробел, энтер, любую) цифра.
Форум по микроконтроллерам: Счётчик нажатий на кнопку — Форум по микроконтроллерам
Как сделать чтобы счетчик считал нажатия нужных кнопок? Всем привет. У меня есть массив кнопок, создан динамически. Не получается сделать, чтобы при
Счетчик нажатия кнопки
Регистрация Вход. Ответы Mail. Вопросы — лидеры Delphi. Как сделать проверку, выделено ли что-то в Memo1? Если да — первая команда, если нет — вторая 1 ставка. Помогите первокурснику.
Вход Регистрация. Что нового?
Как заставить счетчик считать нажатия кнопок в форме?
Ручной электронный счетчик позволяет Вам не забивать свою голову цифрами в бизнесе или занятиях спортом. Вы можете не использовать калькулятор и не считать в столбик. Изобретение выглядит как стильные часы и позволяет оперативно пересчитать количество шагов, метров и даже подсчитать число людей, явившихся на мероприятие. Миниатюрное изобретение вместится даже у Вас в кармане. А эксклюзивный стиль позволяет использовать его в качество аксессуара на руку. Категории Дом и сад. Спорт и фитнес.
Схема счетчика нажатия на кнопку
Вход Регистрация. А нажатия ведут в одной базе по сети или с одного компа и подсчитать нажатия кнопочек за текущий сеанс? У хороших сотрудников на пультах будут кнопочки, а у плохих — лампочки Вопрос то в чем??
Тактовая кнопка, как подключить правильно к «+» или «-» / Хабр
Вы никогда не задумывались, почему в схемах на Arduino иногда кнопки подтягивают к «+» питания, а иногда к общему проводу? Если прямо сейчас набрать в поиске: «тактовая кнопка ардуино» — то на большинстве картинок мы увидим именно прямое подключение, когда резистор подключен на землю. Но, если посмотреть схемы без участия ардуино, то ситуация меняется в корне, чаще можно будет встретить инвертированное включение. Так как же будет подключать кнопку правильнее? Давайте вместе попробуем разобраться в этом вопросе!
Тактовая кнопка является одним из наиболее часто встречающихся устройств дискретного ввода во встраиваемых системах. И даже появление сенсорных экранов все равно их не вытеснило.
Название данного типа кнопок произошло от английского «tactile button». Слово «tactile» иногда сокращают до «tact», видимо из-за этого в русском языке появилось устоявшееся название «тактовая кнопка». Сама кнопка является нефиксирующейся, т.к. после нажатия кнопка возвращается в исходное состояние. А тактильность подразумевает наличие тактильной обратной связи в виде ощущения порога срабатывания кнопки, т.е. в момент срабатывания контактов происходит усиление механического сопротивления относительно усилия при свободном ходе. Это дает пользователю информацию о там, что нажатие зарегистрировано. Также момент срабатывания кнопки может сопровождаться характерным звуковым щелчком. В общем, это заморочки свойственны в основном компьютерным гикам, вот тут можно почитать подробнее.
Тактовая нефиксирующаяся тактильная кнопка имеет нормально разомкнутый контакт. Т.е. цепь, в которой задействована кнопка, будет разорвана, пока не произошло нажатие. Для опроса состояния кнопки в нашем случае будет использоваться вывод Arduino, настроенный на ввод. В этом режиме вход Arduino будет находиться в состоянии высокого импеданса (Z-состояние). Электрическое состояние входа будет определяться параметрами внешней схемы.
Чаще всего кнопки устанавливают между выводом микросхемы и общим проводом схемы. Соответственно, при нажатии кнопка может подключать вывод микросхемы на землю, формируя электрический уровень логического нуля.
Чтобы гарантировать устойчивый уровень логической единицы на входе микросхемы, пока кнопка не нажата, необходимо использовать подтягивающий резистор к плюсу питания. Таким образом, если кнопка не нажата, вход микросхемы примет состояние логической единицы. А при нажатии — примет логический ноль.
Инвертированное включение кажется нелогичным, т.к. логическая единица удерживается на входе микроконтроллера, пока кнопка не нажата.Если кнопка хорошо изолирована от внешних воздействий и расположена на одной плате с микроконтроллером, то достаточно резистора с сопротивлением 100кОм. Входы CMOS микросхем фактически представляют собой затвор полевого транзистора, сопротивление которого носит емкостной характер, и имеет величину в единицы пикофарад. Если сопротивление подтяжки будет очень большим, то ток, который заряжает входную емкость, может оказаться недостаточным для обеспечения необходимой скорости установки высокого уровня напряжения и его стабильного удержания, т.е. вход микроконтроллера будет реагировать на помехи в схеме. Если же сопротивление подтяжки будет очень низким, то это будет дополнительно увеличивать нагрузку на цепи питания при нажатии на кнопку.
Несмотря на то, что при нажатии кнопки на выводе микросхемы считывается логический ноль, а когда кнопка не нажата – единица, такой способ подключения я лично считаю предпочтительнее. Хотя логичнее кажется другое подключение, когда единица считывается при нажатии кнопки.
Прямое включение кнопки. При нажатии микроконтроллер будет считывать логическую единицу. Если кнопка не нажата — то ноль.И все-таки инвертированное включение кнопки применяется чаще. Рассмотрим возможные причины такого выбора. Предположим, что кнопки выведены на лицевую панель прибора и подключены к печатной плате по средством жгута проводов или гибким шлейфом. Как правило, все элементы конструкции подключают к нулевому потенциалу схемы управления (на землю).
Обратите внимание на состав шлейфов. При прямом включении кнопок шлейф содержит проводники обоих потенциалов питания: плюсового и общего. При инвертированном включении кнопок шлейф содержит только общий провод питания.
При замыкании проводников в шлейфе в результате механического повреждения для прямого включения кнопок произойдет короткое замыкание между шинами питания. Для инвертированного включения кнопки в аналогичном случае замыкание цепей питания не произойдет. И схема управления получит меньше электрических повреждений.
Пожалуй, именно по этой причине я предпочитаю инвертированное включение кнопки, и готов из-за этого терпеть некоторые неудобства при программировании.
Еще одна особенность обработки тактовых кнопок связана с несовершенством их механической конструкции. Сухие контакты реальных кнопок ни когда не замыкаются и не размыкаются мгновенно. При замыкании или размыкании возникает дребезг контактов. Т.к. современные цифровые микросхемы имеют достаточно высокие рабочие частоты, дребезг контактов может быть обработан как многократное повторное срабатывание кнопки.
Самый простой способ борьбы с дребезгом контактов, это подключение параллельно кнопки керамического конденсатора обычно до 0,1мкФ. При нажатии конденсатор мгновенно разряжается через замкнутый контакт кнопки на землю, и не мешает ее срабатыванию.
А когда контакты кнопки размыкаются, заряд конденсатора происходит значительно дольше через высокое сопротивление подтягивающего резистора, сглаживая эффект дребезга.
Так как современные микроконтроллеры обладают достаточно высокой производительностью, защиту от дребезга преимущественно выполняют программным способом. И конденсатор можно не устанавливать.
Самым простым программным способом борьбы с дребезгом контактов является увеличение времени между опросами состояния кнопки. Дополнительная пауза между опросам должна превышать длительность переходных процессов. Тогда программа “не заметит” дребезг и проигнорирует любые кратковременные замыкания кнопки.
Также стоит отметить, что большинство современных микроконтроллеров имеют встроенные программно управляемые подтягивающие резисторы. AVR микроконтроллеры, на основе которых выполнены платы Arduino Uno и Mega, имеют встроенную подтяжку к плюсу питания. Подтяжка может быть активирована программно, если в функцию pinMode передать параметр INPUT_PULLUP. Это решение дополнительно позволяет упростить схему устройства исключив из нее внешние резисторы.
Вывод:
Если вы собираете макет на Arduino из бредборда и кучи перемычек, то сэкономьте свои силы и используйте самый простой вариант инвертированного подключения кнопки с внутренней подтяжкой и программной защитой от дребезга.
Счетчик вверх-вниз с использованием Arduino и 7-сегментного дисплея
Подразделения:
Программное обеспечение:
Приветствуем вас в нашем новом проекте. В этом проекте мы собираемся сделать очень интересный проект, который представляет собой счетчик Up-Down. Большинство из нас, кто имеет опыт работы с электроникой или изучал цифровую электронику, должны знать счетчик. Счетчик — это простое устройство для подсчета чисел. Что касается цифровой электроники, существует два типа счетчиков: прямой счетчик, который ведет счет в порядке возрастания, и еще один счетчик, который ведет счет в порядке убывания. И у каждого счетчика есть предел сброса, при достижении которого счетчик сбрасывается до своего начального значения и снова начинает отсчет. Предел каждого счетчика зависит от битов счетчика. Например, у нас есть 8-битный счетчик вверх, что означает, что он будет считать до 255, а затем сбрасывается и снова начинает считать с нуля.
Программное обеспечение для установки
В этом проекте нам понадобятся два программного обеспечения. Во-первых, это Arduino IDE, которая используется для программирования Arduino. Поскольку мы собираемся сделать этот проект в моделировании, мы будем использовать программное обеспечение для моделирования Proteus. Proteus — это программа для моделирования электронных проектов. В этом программном обеспечении мы можем запускать моделирование электронных схем в реальном времени и отлаживать их, не повреждая реальных компонентов.
И хорошей практикой является создание любой схемы в симуляции первой, если мы делаем это в первый раз.
И Proteus имеет очень большую базу данных для электронных компонентов, но ему не хватает некоторых новых библиотек компонентов, для этого мы должны установить некоторые библиотеки для этих компонентов. В этом нам нужно установить библиотеку для модуля Arduino UNO.
Сначала мы должны загрузить библиотеку Arduino UNO.
Необходимые компоненты
Для этого проекта нам потребуются следующие компоненты
- Arduino UNO
- 7-сегментный светодиодный дисплей
- Две кнопки
- 2 резистора
Сведения о компонентах
Arduino UNO
- Arduino UNO — это плата разработки с открытым исходным кодом, разработанная Arduino.
- В нем используется микроконтроллер ATmega328 производства ATMEL.
- ATmega328 имеет 8-битное процессорное ядро на основе RISC с флэш-памятью 32 КБ.
- Arduino UNO имеет 14 цифровых входных/выходных контактов и 6 аналоговых входных/выходных контактов.
- Он имеет 1 UART, 1 SPI и 1 коммуникационное периферийное устройство I2C на борту.
- Имеет 10-битный АЦП, который может выдавать значения от 0 до 1023.
- Рабочее напряжение ATmega IC составляет 5 вольт, но на плате Arduino, используя разъем питания постоянного тока, мы можем подключить источник питания до 9-12 вольт.
- Мы можем запитать Arduino UNO, используя разъем питания постоянного тока или Vin на модуле Arduino UNO.
- Здесь мы использовали Arduino UNO в качестве основного контроллера, который здесь работает как счетчик и отображает то же самое на 7-сегментном светодиодном дисплее.
7-сегментный светодиодный дисплей
- Это модуль светодиодного дисплея, в котором есть семь светодиодов, расположенных в прямоугольной форме, на которых мы можем отображать однозначные числа от 0 до 9, а также некоторые буквы алфавита.
- Он имеет два типа: один с общим заземлением, а другой с общим Vcc.
- Имеется 7 разных контактов для каждого светодиода и один общий контакт, этот контакт может быть общей землей или общим Vcc в зависимости от типа дисплея.
- Контакты на дисплее обозначены как a,b,c,d,e,f,g.
- Общая земля также известна как общий катод, а общий Vcc также известен как общий анод.
- В дисплее с общим катодом светодиоды будут светиться, когда контакты светодиодов подключены к логическому HIGH.
- При отображении типа общего анода светодиоды будут светиться, когда контакты светодиодов подключены к логическому НИЗКОМУ уровню.
- Поскольку это простые светодиоды, поэтому при их использовании в схеме необходимо использовать несколько защитных резисторов с каждым из них, если мы используем дисплей с общим заземлением, и один резистор с выводом Common Vcc, если мы используем тип Common Vcc. отображать.
- Для счетчика мы будем следовать таблице истинности дисплея для отображения чисел.
Кнопки
- В этом примере мы использовали простую кнопку мгновенного действия для установки счетчика в режим счета ВВЕРХ или в режим ВНИЗ.
- В кнопке есть два контакта.
- Поскольку мы будем использовать кнопки в активном низком состоянии, это означает, что одна сторона будет подключена к земле, а другая клемма будет подключена к Arduino.
- Итак, когда мы нажмем кнопку, она замкнет цепь и установит штифт.
- При использовании любой кнопки обязательно использовать с ней подтягивающий или подтягивающий резистор, иначе будут некоторые сбои в работе.
- Поскольку, когда кнопка отпущена, цепь будет разомкнута, и если к другому контакту кнопки не подключены подтягивающие или подтягивающие устройства, то этот контакт будет в плавающем состоянии и будет подавать произвольное напряжение, что создаст проблему.
- Здесь, в этом проекте, мы использовали подтягивающий резистор, чтобы при отпускании кнопки состояние контакта было в логическом состоянии ВЫСОКИЙ.
Обзор проекта
Как известно, счетчики представляют собой простые электронные схемы, которые подсчитывают некоторые значения и после достижения максимального значения сбрасываются. В этом проекте мы создадим счетчик вверх-вниз, что означает, что наш счетчик будет считать от 0 до 9 и снова после 9-0.
Мы будем использовать 7-сегментный дисплей для отображения значений счетчика. В этом проекте мы использовали обычный светодиодный экран. И две кнопки для запуска счетчика в прямом или обратном счете. Когда мы нажимаем кнопку ВВЕРХ, Arduino активирует контакты в соответствии с прямым счетом, а светодиод отображает числа от 0 до 9.и когда мы нажимаем кнопку DOWN, Arduino активирует вывод в соответствии с обратным счетом, и светодиод будет отображать числа от 9 до 0.
Для управления светодиодами Arduino установит контакты как ВЫСОКИЙ и НИЗКИЙ в соответствии с таблицей истинности для отображения общего заземления.
Arduino установит контакты, а светодиод отобразит цифры.
Принципиальная схема и работа
Теперь мы знаем, как работает наш счетчик, поэтому давайте создадим схему для него:
- Откройте новый проект в Proteus и импортируйте все необходимые компоненты в рабочую область.
- Теперь давайте подключим кнопки к Arduino, для кнопки мы будем использовать цифровые контакты D11 и D12 Arduino UNO.
- Соедините одну сторону кнопок с Vcc, а другую сторону с Arduino UNO, и на этой стороне мы подключим подтягивающие резисторы.
- Соедините подтягивающие резисторы с землей.
- Теперь соедините контакты 7-сегментного дисплея с Arduino UNO.
- Подключите контакты светодиодного дисплея в том же порядке, что и 9.0003 А-2, В-3, С-4, Д-6, Е-7, Ф-8, Г-9 и ДП-5 . В противном случае на дисплее будут отображаться неверные данные.
Код Arduino для счетчика Up-Down
Теперь мы начнем писать код счетчика Up-Down. Код этого проекта будет разделен на три основные части. В первой части мы объявим все необходимые переменные и выводы. Во второй части мы установим режимы контактов и установим начальные состояния для контактов и при необходимости выполним необходимую настройку, а в последней части мы напишем нашу основную функциональность нашего проекта, которую мы хотим запускать постоянно.
- Итак, давайте объявим все необходимые переменные. Прежде всего, объявите переменные для контактов семисегментного дисплея и кнопки счетчика вверх и кнопки счетчика вниз.
- Теперь объявите все необходимые переменные, которые мы будем использовать в этом коде.
- Теперь мы объявили все необходимые переменные и выводы, так что давайте начнем с функции настройки void.
Void setup()
- Это одна из самых важных функций в структуре кода Arduino. Без этого наш код не будет успешно скомпилирован и покажет ошибку.
- Здесь мы установим режим вывода для каждого вывода и установим для них начальные значения.
- Эта функция запускается только один раз каждый раз, когда мы перезапускаем код, поэтому мы напишем только ту часть кода, которую хотим запустить
- Мы установим режим вывода семи сегментных светодиодов в режим вывода, так как мы хотим управлять светодиодами от них.
- И устанавливаем пин-режим кнопок в качестве ввода, так как мы хотим прочитать их состояние в приложении.
- В целях отладки также инициализируйте последовательный монитор.
- После этого мы напишем функцию цикла void.
Void loop()
- Это также одна из самых важных функций согласно структуре кода Arduino, мы не можем написать код без использования этой функции.
- В этой функции мы напишем код, который мы хотим запустить в непрерывном цикле, поэтому в этом разделе мы напишем наш основной код приложения.
- В соответствии с применением нашего кода, прежде всего, мы будем считывать состояния кнопок счетчика «Вверх» и «Вниз», а когда состояние изменится, мы активируем счетчик.
- Напишите условие для кнопки Up counter, при нажатии на кнопку состояние кнопки меняется и мы будем проверять состояние кнопки. Если он ВЫСОКИЙ, мы начнем увеличивать переменную счетчика и, используя «changeNumber ()», мы будем отображать числа на семисегментном светодиодном дисплее.
- Аналогично, для кнопки нижнего счетчика, когда кнопка нажата, состояние изменяется, а когда состояние кнопки высокое, мы начинаем уменьшать переменную счетчика и отображать число на семисегментном дисплее с помощью кнопки Функция «changeNumber()»
Void changeNumber(int buttonpress)
- Это определяемая пользователем функция.
- Мы будем использовать эту функцию для отображения числа на семисегментном светодиодном дисплее.
- Эта функция установит состояние контактов светодиода в соответствии с числом, которое мы хотим отобразить.
- Он принимает в качестве аргумента число и с помощью переключателя устанавливает состояние контактов в соответствии с соответствующим номером.
- Состояние контактов определяется таблицей истинности семисегментного светодиодного дисплея, упомянутой на приведенном выше изображении таблицы истинности.
Результат и тест
После схемы и части кодирования мы готовы запустить симуляцию:
- Чтобы запустить симуляцию, мы должны добавить шестнадцатеричный файл кода нашего приложения.
- Мы должны сгенерировать шестнадцатеричный файл из Arduino IDE.
- Чтобы создать шестнадцатеричный файл, перейдите в «Скетч >> Экспортировать скомпилированный двоичный файл», после чего он скомпилирует код нашего приложения, а шестнадцатеричный файл будет сгенерирован и сохранен в той же папке проекта.
- Теперь включите это в модуль Arduino UNO в моделировании.
- Чтобы добавить шестнадцатеричный файл, нажмите на модуль Arduino UNO, после чего откроется окно, оттуда перейдите к расположению шестнадцатеричного файла и добавьте его.
- Теперь запустите симуляцию.
- В начале на светодиодном дисплее отображается «0».