Таймер обратного отсчета на Arduino


Таймеры – это часы, используемые для измерения временных интервалов. Существуют два типа таймеров. Первый тип используется для счета от нуля и выше – он применяется для измерения прошедшего времени, данный тип таймера называют секундомером. А второй тип таймера считает вниз (до нуля) от времени, заданным пользователем – этот тип таймера называют таймером обратного отсчета.

Внешний вид таймера обратного отсчета на Arduino

В этой статье мы рассмотрим создание таймера обратного отсчета на основе платы Arduino. Для получения информации о текущем времени в данном проекте мы не будем использовать модуль часов реального времени (Real Time Clock, RTC). Длительность временного промежутка для счета будет задаваться с помощью клавиатуры 4х4 и ЖК дисплея 16x2. Когда таймер будет досчитывать до нуля будет издаваться звуковой сигнал с помощью зуммера.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. Клавиатура (клавишная панель) 4х4 (купить на AliExpress).
  4. Зуммер (Buzzer) (купить на AliExpress).
  5. Кнопка.
  6. Потенциометр (10 кОм) (купить на AliExpress).
  7. Резистор 10 кОм (купить на AliExpress).
  8. Резистор 100 Ом (купить на AliExpress).
  9. Соединительные провода.

Работа схемы

Схема таймера обратного отсчета на основе платы Arduino представлена на следующем рисунке.

Схема таймера обратного отсчета на основе платы ArduinoПлата Arduino Uno управляет всеми процессами в схеме. Клавиатура используется для ввода продолжительности временного интервала (откуда считать), а ЖК дисплей применяется для отображения обратного отсчета. Кнопка используется для запуска отсчета. Более подробно про подключение клавиатуры 4х4 к плате Arduino можно прочитать в этой статье, а про подключение ЖК дисплея к Arduino – в этой.

Объяснение программы для Arduino

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

Далее в программе мы сообщаем количество строк и столбцов в используемой нами клавиатуре и задаем карту клавиш клавиатуры.

Затем мы сообщаем плате Arduino к каким ее контактам подключены контакты строк и столбцов клавиатуры, а также контакты ЖК дисплея.

Следующая команда создает объект клавиатуры в программе.

В функции setFeedingTime() после нажатия кнопки мы можем ввести время, с которого начнется отсчет, для начала счета после этого необходимо нажать клавишу D на клавиатуре.

В функции void setup() мы инициализируем ЖК дисплей и последовательную связь, а также задаем режим работы (на ввод или вывод данных) для используемых контактов.

Работа проекта

Принцип работы проекта достаточно прост. После запуска программы на экране ЖК дисплея высветится надпись “Arduino Timer” и она будет гореть до тех пор пока вы не нажмете кнопку. После нажатия кнопки программа попросит вас ввести время, с которого начнется обратный отсчет, при помощи вызова функции “setFeedingTime”. Время вводится с помощью клавиатуры. После ввода времени необходимо нажать клавишу ‘D’ на клавиатуре чтобы сохранить введенное время и начать обратный отсчет.

Начало обратного отсчета в нашем проекте

Далее в функции loop() мы будем выполнять ряд вычислений чтобы осуществить уменьшение счета (секунда за секундой) и показывать на ЖК дисплее оставшееся до истечения таймера время в формате HH:MM:SS. Более подробно все эти процессы показаны на видео, приведенном в конце статьи.

Когда таймер обратного отсчета достигнет нуля зуммер начнет издавать звуки (100 раз если его не прервать). Чтобы остановить сигнал зуммера необходимо нажать и удерживать кнопку. Также нажать кнопку можно в любое время если вы хотите остановить таймер.

Таймер обратного отсчета досчитал до нуля

Исходный код программы

Текст программы снабжен комментариями, помогающими легче понять его смысл.

(Проголосуй первым!)
Загрузка...
6 724 просмотров

Комментарии

Таймер обратного отсчета на Arduino — 5 комментариев

  1. А почему не поставить ЖК дисплей на 4-ре вывода? Или как альтернативный вариант на TM1637.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *