Таймер на ардуино с lcd. Таймер для Arduino с ЖК-дисплеем: создание удобного устройства для отсчета времени

Как создать таймер на Arduino с ЖК-дисплеем. Какие компоненты понадобятся для сборки устройства. Как запрограммировать Arduino для работы таймера. Какие дополнительные функции можно добавить.

Содержание

Необходимые компоненты для создания таймера на Arduino

Для сборки простого таймера на Arduino с ЖК-дисплеем понадобятся следующие компоненты:

  • Плата Arduino (например, Arduino Uno или Nano)
  • ЖК-дисплей 16×2 символов
  • Потенциометр на 10 кОм для регулировки контрастности дисплея
  • Кнопки для управления (2-3 штуки)
  • Резисторы 220 Ом (для кнопок)
  • Макетная плата и провода для соединений
  • Источник питания (батарейка или USB-кабель)

Дополнительно можно добавить пьезодинамик для звуковой индикации окончания отсчета времени.

Схема подключения компонентов таймера

Подключение компонентов таймера к Arduino осуществляется следующим образом:

  • ЖК-дисплей подключается к цифровым пинам Arduino (обычно D4-D9)
  • Потенциометр подключается к пину контрастности дисплея
  • Кнопки подключаются к цифровым пинам через резисторы
  • Пьезодинамик (если используется) подключается к любому свободному цифровому пину

Точная схема подключения зависит от используемой модели Arduino и ЖК-дисплея. Важно сверяться с документацией на конкретные компоненты.


Программирование Arduino для работы таймера

Для программирования таймера на Arduino потребуется выполнить следующие шаги:

  1. Подключить необходимые библиотеки (LiquidCrystal для работы с ЖК-дисплеем)
  2. Инициализировать дисплей и пины для кнопок
  3. Реализовать функции для установки и отсчета времени
  4. Обрабатывать нажатия кнопок в основном цикле программы
  5. Выводить текущее время на дисплей
  6. Реализовать звуковую индикацию окончания отсчета

Вот пример базового кода для реализации таймера:

«`cpp #include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const int buttonPin1 = 8; const int buttonPin2 = 9; const int buzzerPin = 10; int seconds = 0; int minutes = 0; bool timerRunning = false; void setup() { lcd.begin(16, 2); pinMode(buttonPin1, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); pinMode(buzzerPin, OUTPUT); } void loop() { if (digitalRead(buttonPin1) == LOW) { delay(50); // Debounce if (digitalRead(buttonPin1) == LOW) { if (!timerRunning) { minutes++; if (minutes > 59) minutes = 0; } } } if (digitalRead(buttonPin2) == LOW) { delay(50); // Debounce if (digitalRead(buttonPin2) == LOW) { timerRunning = !timerRunning; } } if (timerRunning) { delay(1000); if (seconds > 0 || minutes > 0) { if (seconds == 0) { seconds = 59; minutes—; } else { seconds—; } } else { timerRunning = false; tone(buzzerPin, 1000, 1000); } } lcd.clear(); lcd.setCursor(0, 0); lcd.print(«Timer: «); if (minutes < 10) lcd.print("0"); lcd.print(minutes); lcd.print(":"); if (seconds < 10) lcd.print("0"); lcd.print(seconds); lcd.setCursor(0, 1); if (timerRunning) { lcd.print("Running"); } else { lcd.print("Stopped"); } } ```

Этот код реализует базовую функциональность таймера с возможностью установки времени и запуска/остановки отсчета. При необходимости его можно расширить дополнительными функциями.


Дополнительные функции для улучшения таймера

Для улучшения функциональности таймера можно добавить следующие возможности:

  • Сохранение настроек в EEPROM памяти Arduino
  • Несколько режимов работы (например, секундомер и таймер обратного отсчета)
  • Возможность установки нескольких интервалов времени
  • Индикация оставшегося времени с помощью светодиодов
  • Управление внешними устройствами по окончании отсчета времени

Реализация этих функций потребует доработки кода и возможно добавления дополнительных компонентов к схеме.

Корпус для таймера на Arduino

Для удобства использования таймера рекомендуется поместить его в корпус. Варианты создания корпуса:

  • 3D-печать корпуса по готовой или самостоятельно разработанной модели
  • Изготовление корпуса из пластика или дерева вручную
  • Использование готовых корпусов для электронных проектов
  • Размещение компонентов в небольшой пластиковой или металлической коробке

При проектировании корпуса важно предусмотреть отверстия для дисплея, кнопок управления и доступа к портам Arduino для программирования и питания устройства.


Возможные проблемы при создании таймера и их решение

При сборке и программировании таймера на Arduino могут возникнуть следующие проблемы:

  • Некорректное отображение символов на ЖК-дисплее — проверьте подключение и настройку контрастности
  • Ложные срабатывания кнопок — добавьте программную или аппаратную защиту от дребезга контактов
  • Неточность отсчета времени — используйте аппаратный таймер Arduino вместо delay()
  • Быстрый разряд батареи — оптимизируйте код и используйте режимы энергосбережения Arduino

Большинство проблем решается проверкой схемы подключения и корректировкой программного кода.

Применение таймера на Arduino в повседневной жизни

Созданный таймер на Arduino может найти различные применения в быту и профессиональной деятельности:

  • Контроль времени приготовления пищи
  • Напоминание о приеме лекарств
  • Таймер для настольных игр
  • Контроль времени выполнения заданий или презентаций
  • Автоматизация работы различных устройств по расписанию

Универсальность Arduino позволяет легко адаптировать таймер под конкретные задачи пользователя.


Заключение

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

Важно помнить, что представленный в статье код и схема являются базовыми. Их можно и нужно дорабатывать и улучшать, добавляя новую функциональность и оптимизируя работу устройства. Экспериментируйте, пробуйте новые идеи, и у вас обязательно получится создать уникальный и полезный гаджет!


Таймер мытья рук на Arduino

2020-04-27

Все статьи →

Поддержу тему с борьбой против COVID-19 с помощью контроллеров arduino и расскажу про свою самоделку. Врачи говорят, что для эффективной защиты от вируса помогает тщательное мытье рук в течении 20 сек и дольше, и поэтому я собрал небольшой таймер в ванную комнату.

Устройство состоит всего из 4 компонентов, а именно:

  • Плата Arduino Nano v3 с контроллером AtMega328
  • Адресные светодиоды WS2812 в количестве 10шт
  • Датчик препятствия YL-63
  • АКБ от старого планшета

Сенсорную кнопку добавил для включения таймера для тог, что бы дети чистили зубы 2.5мин. Я знаю, что есть готовые круглые модули с WS2812, но китайцы прислали мне 100шт отдельных светодиодов, которые я спаял форме круга:

И так, как же оно работает:

Когда вы проведете рукой перед датчиком препятствия, запустится таймер, а кольцо из светодиодов заполнится определенным цветом (настраивается в прошивке), а по истечении времени светодиоды погаснут.

Вот собственно и всё. По сенсорной кнопке аналогично включается таймер для чистки зубов (у меня 2.5 мин)

Схема подключения:

  • YL-63: Vcc — 5V, GND — GND, OUT — D3
  • WS2812: 5V — 5V, Din — D2, GND — GND
  • АКБ: Vcc — 5V, GND — GND

Скетч и библиотека для адресных светодиодов в архиве.

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

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.

Термометр с таймером и сигнализатором.

Термометр с таймером и сигнализатором.[May. 14th, 2011|11:50 pm]

Cообщество любителей Arduino

Друзья, я домашний пивовар и мне очень необходим такой гаджет. К сожалению, я не программист и ардуино купил, чтобы понять что к чему. Паяльник держать умею! У меня есть LCD Keypad Module for ARDUINO & FREEDUINO Board, вот такая:
http://item.mobileweb.ebay.com/viewitem?itemId=250781446856&cmd=VIDESC&title=Description&index=0&nav=SEARCH&nid=99821967787
Возможно ли сделать из этого термометр с датчиками DS18B20 2-3 штуки, зуммером и возможностью настройки срабатывания сигнала, если температура вышла за рамки заданной? Данное устройства необходимо для приготовления затора с помощью которого делается сусло, а из сусло — пиво. Возможно существуют уже готовые скетчи? Очень благодарен за помощь!
Comments:
From: mteorman
2011-05-15 09:50 am (UTC)

Не мог пройти мимо такого применения

(Link)

From: megadenis
2011-05-15 03:17 pm (UTC)

Re: Не мог пройти мимо такого применения

(Link)

Большое спасибо за ссылки. Изучаю с интересом!

From: megadenis
2011-05-15 03:25 pm (UTC)

Re: Не мог пройти мимо такого применения

(Link)

По ссылкам сложные проекты с управлением твердотельных реле. Мне бы термометр с зуммером просто. 🙂

From: _mebius_
2011-05-16 07:26 am (UTC)

Re: Не мог пройти мимо такого применения

(Link)

А каков алгоритм работы терметра/термостата?
Твердотельные реле — ну какая разница чем рулить? Можно звонок повесить… Просто функционал ардуино позволяет не просто пищать зуммером, но и вполне себе успешно поддерживать температуру в заданных параметрах…
From: megadenis
2011-05-16 07:43 am (UTC)

Re: Не мог пройти мимо такого применения

(Link)

В данный момент нужен простой термометр, устанавливаем температуру 66гр., девайс считывает показания датчика, и если температура изменится, допустим до 62гр. — девайс пищит. Желательно с двух датчиков температуры. Это нужно для затирания солода в фильтровально/заторном баке.
Нашел еще интересный проект — BrewTroller http://www.brewtroller.com/wiki/doku.php?id=devices:brewtroller но это уже не Ардуино. Хотя все это, наверное можно сделать на Arduino тоже.
From: _mebius_
2011-05-16 08:35 am (UTC)

Re: Не мог пройти мимо такого применения

(Link)

Ну программа не сложная.
Можно начать с подключения датчиков к ардуине и выводе изображения на дисплей — для этого есть стандартные библиотеки и примеры в самой среде. Потом можно добавить функцию отслеживания жестко прописанной в программе температуры (66 градусов) — сравнение данных с датчиков с записанным значением и пищание, если не совпадает. А потом уже можно и кнопки подключить…
BrewTroller — да, можно и на ардуине…

From: _mebius_
2011-05-16 07:33 am (UTC)

Re: Не мог пройти мимо такого применения

(Link)

From: megadenis
2011-05-16 07:45 am (UTC)

Re: Не мог пройти мимо такого применения

(Link)

да, про МастерКит знаю тоже.

(Deleted comment)

Так давно готово все уже в виде контроллера для пивоварни Mega Brewery. Найдите пост у меня в журнале о нем!

Таймер электронный с LCD дисплеем (минутный)

Электронный таймер с LCD дисплеем — незаменимая вещь в арсенале современного террариумиста. Это устройство позволит спокойно уезжать в отпуск или командировку, не беспокоясь о том, кому поручить наблюдение за террариумом.

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

Этот таймер позволяет задать не только время, но и дни, в которые должно работать оборудование. Эта функция очень полезна, к примеру, при использовании туманогенераторов и систем осадков. Орошение террариума будет происходить с нужными интервалами, а значит к приезду хозяина тропические дебри не превратятся в пустыню или болото.

Технические характеристики электронного таймера с LCD дисплеем (арт.: AE-60):

  • количество программ: 8;
  • большой LCD дисплей;
  • напряжение питания: 120 В/60 Гц, 230 В/50 Гц;
  • дискретность установки времени: 1 минута;
  • точность +/-1 минута в месяц;
  • аккумулятор NIMHI 1.2 В > 100hrs;
  • рабочая температура:-10 ~ + 40;
  • имеется функция Random;
  • имеется функция перехода на летнее время.

Набор команд для электронного таймера с LCD дисплеем (арт.: AE-60):

  • WEEK ― установка недели кнопкой CLOCK или TIMER;
  • HOUR ― установка часов кнопкой CLOCK или TIMER;
  • MIN ― установка минут кнопкой CLOCK или TIMER;
  • CLOCK ― установка текущего времени кнопками WEEK, HOUR, MIN. Выбор режима на 12 или 24 часа кнопкой TIMER. Включение функции летнего времени кнопкой ON/AUTO/OFF;
  • TIMER ― установка программы кнопками WEEK, HOUR, MIN. Выбор режима на 12 или 24 часа кнопкой CLOCK;
  • ON/AUTO/OFF ― выбор режима работы таймера;
  • RANDOM ― установка и отмена функции «Случайно»;
  • Reset ― сброс программ или возврат сброшенных программ.

Подробнее ознакомиться с работой и устройством таймера можно при помощи инструкции и видеообзора ниже.

Arduino обратный отсчет ЖК-дисплея код часы: минуты: секунды формат

Это базовый код для отображения обратного отсчета в формате ЧЧ: ММ: СС; Час: Минута: Секунда.

Код использует функцию millis () Arduino для вычисления времени, millis () возвращает время в миллисекундах, прошедшее с момента включения платы. Затем оно используется для вычитания из установленного значения времени и преобразуется в цифровой формат времени.

Этот код имеет фиксированное время, которое должно быть инициализировано необходимыми значениями часа, минуты и секунды перед загрузкой скетча.Обратный отсчет всегда начинается, когда плата включена, если запуск обратного отсчета необходимо контролировать, это можно сделать с помощью дополнительного входа с простым условием «если».

Здесь код запрограммирован на отображение часов: минут: секунд как 00:00:00.

См .: Интерфейс ЖК-дисплея Arduino

Код

 #include < LiquidCrystal_I2C  .h>
  LiquidCrystal_I2C  lcd (0x27, 16, 2);
длинный час = 23, минута = 59, секунда = 59;
long countdown_time = (час * 3600) + (минута * 60) + секунда;
void setup () {
 ЖКв этом();
 lcd.backlight ();
 lcd.setCursor (4, 0);
 lcd.print ("ЧЧ: ММ: СС");
}

void loop () {
 long countdowntime_seconds = countdown_time - (миллис () / 1000);
 if (countdowntime_seconds> = 0) {
 long countdown_hour = countdowntime_seconds / 3600;
 long countdown_minute = ((countdowntime_seconds / 60)% 60);
 long countdown_sec = countdowntime_seconds% 60;
 lcd.setCursor (4, 1);
 if (countdown_hour <10) {
 ЖКпечать ("0");
 }
 lcd.print (countdown_hour);
 lcd.print (":");
 if (countdown_minute <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_minute);
 lcd.print (":");
 if (countdown_sec <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_sec);
 }
 задержка (500);
}
 

В коде общее время, указанное в часах, минутах и ​​секундах, преобразуется в секунды с использованием формулы, которая получает значение переменной «countdown_time».Затем он вычитается из значений секунд, полученных из функции Arduino millis () (millis (), деленной на 1000). Затем он снова конвертируется обратно в часы, минуты и секунды с использованием формул, используемых для переменных «countdown_hour», «countdown_minute» и «countdown_sec» соответственно. Эти значения отображаются на ЖК-дисплее, который показывает обратный отсчет в формате ЧЧ: ММ: СС.

Таймер обратного отсчета LCD с зуммером

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

 #include < LiquidCrystal_I2C  .h>
  LiquidCrystal_I2C  lcd (0x27, 16, 2);
длинный час = 0, минута = 10, секунда = 10; long countdown_time = (час * 3600) + (минута * 60) + секунда;
int индикация = 10; // Подключите светодиод или зуммер к цифровому выводу 10
void setup () {
 pinMode (индикация, ВЫХОД);
 lcd.init ();
 lcd.backlight ();
 lcd.setCursor (4, 0);
 lcd.print ("ЧЧ: ММ: СС");
}

void loop () {
 long countdowntime_seconds = countdown_time - (миллис () / 1000);
 if (countdowntime_seconds> = 0) {
 long countdown_hour = countdowntime_seconds / 3600;
 long countdown_minute = ((countdowntime_seconds / 60)% 60);
 long countdown_sec = countdowntime_seconds% 60;
 ЖКsetCursor (4, 1);
 if (countdown_hour <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_hour);
 lcd.print (":");
 if (countdown_minute <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_minute);
 lcd.print (":");
 if (countdown_sec <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_sec);
 if (countdowntime_seconds == 0) {
 digitalWrite (индикация, ВЫСОКИЙ);
 }
 }
 задержка (500);
}

 

ЖК-дисплей обратного отсчета с вводом с клавиатуры

С помощью того же метода обратного отсчета, описанного выше, можно добавить дополнительную функцию для установки времени с помощью клавиатуры с помощью клавиатуры 4 × 4 или 4 × 3.

См.: Клавиатура Arduino 4 × 4 и ЖК-дисплей

Код

 #include < LiquidCrystal_I2C  .h>
  LiquidCrystal_I2C  lcd (0x27, 16, 2);
#include < Клавиатура  .h>
const byte ROWS = 4;
константный байт COLS = 4;
символьные ключи [ROWS] [COLS] = {
 {'1', '2', '3', 'A'},
 {'4', '5', '6', 'B'},
 {'7', '8', '9', 'C'},
 {'*', '0', '#', 'D'}
};
byte rowPins [ROWS] = {2, 3, 4, 5};
byte colPins [COLS] = {6, 7, 8, 9};
  Клавиатура  клавиатура =  Клавиатура  (makeKeymap (клавиши), rowPins, colPins, ROWS, COLS);
Строковое действие;
long timein [6], countdown_time = 0, initialsecond = 0;
int я = 0;

void setup () {
 ЖКв этом();
 lcd.backlight ();
 lcd.setCursor (4, 0);
 lcd.print ("ЧЧ: ММ: СС");
 lcd.setCursor (4, 1);
 lcd.print ("00:00:00");
}

void loop () {
 char key = keypad.getKey ();
 if (key) {
 switch (key) {
 // Если ключ - C установить время.
 case 'C':
 действие = "set_time";
 lcd.setCursor (4, 1);
 lcd.blink ();
 я = 0;
 ломать;
 // Если клавиша D запускает обратный отсчет.
 case 'D':
 действие = "start_countdown";
 ЖКnoBlink ();
 ломать;
 дефолт :
 if (action == "set_time") {
 я ++;
 int c = i - 1;
 timein [c] = key - 48;
 начальная секунда = 0;
 длинный час = (время в [0] * 10) + время в [1];
 длинная минута = (время в [2] * 10) + время в [3];
 длинная секунда = (время в [4] * 10) + время в [5]; //второй
 countdown_time = (час * 3600) + (минута * 60) + секунда;
 lcd.print (ключ);
 if (i% 2 == 0 && i <6) {
 ЖКРаспечатать(":");
 }
 ломать;
 }
 }
 }
 if (action == "start_countdown") {
 if (initialsecond == 0) {
 начальная секунда = миллис () / 1000;
 }
 long countdowntime_seconds = countdown_time - (миллис () / 1000) + начальная секунда;
 if (countdowntime_seconds> = 0) {
 long countdown_hour = countdowntime_seconds / 3600;
 long countdown_minute = ((countdowntime_seconds / 60)% 60);
 long countdown_sec = countdowntime_seconds% 60;
 ЖКsetCursor (4, 1);
 if (countdown_hour <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_hour);
 lcd.print (":");
 if (countdown_minute <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_minute);
 lcd.print (":");
 if (countdown_sec <10) {
 lcd.print («0»);
 }
 lcd.print (countdown_sec);
 }
 задержка (500);
 }
}
 

Операции по установке времени и запуску обратного отсчета.

  1. Нажмите «C», чтобы установить время.
  2. Затем введите время в виде 6-значного ввода, например

Для 10 минут 30 секунд введите ЧЧММСС -> 001030

Для 1 часа 59 минут 59 секунд введите 015959

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

  1. Теперь нажмите D, обратный отсчет начнется от установленного времени.

После начала обратного отсчета любое случайное нажатие кнопки, включая цифровые клавиши, C или D, D после C, ничто не прерывает счет.Чтобы изменить подсчет, необходимо следовать за последовательностью: кнопка C> ввод времени> кнопка D.

То же самое можно сделать с помощью клавиатуры 4x3, назначив кнопки * и # как клавиши «C» и «D».

Секундомер

с использованием Arduino и ЖК-дисплея


Секундомер с использованием Arduino и ЖК-дисплея - кнопка сброса запуска и остановки

В этом проекте мы разработали простой секундомер с использованием Arduino и ЖК-дисплея с кнопкой запуска, остановки и сброса. Секундомер всегда будет иметь 2 кнопки или режима, режим запуска и остановки.У него могут быть другие функции, но они всегда будут. Кроме того, мы добавили функцию сброса. Это можно сделать, нажав кнопку сброса Arduino.

Функция миллисекунды кода Arduino позволяет Arduino отображать функции с точностью до миллисекунд со 100% точностью. Мы можем отображать до 4 цифр после десятичной точки. Но здесь мы просто отображали 2 цифры. Тот же проект можно выполнить с помощью 4-значного 7-сегментного дисплея.

Вы можете просмотреть другую версию этого проекта: Секундомер с использованием 4-значного 7-сегментного дисплея и Arduino


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

Нам просто нужно несколько из этих компонентов, чтобы собрать схему, как показано ниже.
1. Плата Arduino UNO
2. ЖК-дисплей 16 * 2
3. Кнопки - 2
4. Макетная плата
5. Подключите провода перемычек


Схема: секундомер с использованием Arduino и ЖК-дисплея

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

Подключите контакт № 4,6,11,12,13,14 ЖК-дисплея к контакту № 7,6,5,4,3,2 Arduino.

Подключите две кнопки к цифровым контактам 8 и 9 Arduino.


Работа и операции:

После загрузки кода на плату Arduino отобразится , нажмите «Старт» .Так что просто нажмите кнопку пуска, и тогда начнется отсчет времени. Чтобы остановить истекшее время, просто нажмите другую кнопку, например кнопку «Стоп». Следовательно, секундомер остановится. Теперь, если вы хотите сбросить схему, просто нажмите кнопку сброса на плате Arduino UNO.



Исходный код / ​​Программа:

Вот код для секундомера с использованием Arduino и ЖК-дисплея. Скопируйте его и загрузите на свою плату Arduino UNO.

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

34

35

36

37

38

39

40

41

42

43

44

45

46

47

00030002 47

00030002 47

0003

51

52

53

54

55

56

57

58

59

60

#include

ЖК-дисплей LiquidCrystal (7, 6, 5, 4, 3, 2);

void setup ()

{

lcd.begin (16, 2);

lcd.clear ();

Serial.begin (9600);

pinMode (8, INPUT);

digitalWrite (8, ВЫСОКИЙ);

pinMode (9, ВХОД);

digitalWrite (9, ВЫСОКИЙ);

}

двойной i = 0;

двойной a = миллис ();

двойной с;

пустая петля ()

{

жк.чистый();

lcd.print («нажмите старт»);

задержка (100);

if (digitalRead (8) == LOW)

{

lcd.clear ();

a = миллис ();

в то время как (digitalRead (9) == HIGH)

{

c = миллис ();

i = (c - a) / 1000;

ЖК-принт (i);

lcd.setCursor (7,0);

lcd.print ("Sec's");

lcd.setCursor (0,0);

Serial.println (c);

Серийный.println (а);

Serial.println (i);

Serial.println ("......");

задержка (100);

}

if (digitalRead (9) == LOW)

{

while (digitalRead (8) == HIGH)

{

lcd.setCursor (0,0);

ЖК-принт (i);

lcd.setCursor (11,0);

lcd.print ("");

lcd.setCursor (0,0);

задержка (100);

}

}

}

}


Демонстрация видео:

Простой цифровой секундомер с использованием Arduino и ЖК-дисплея

Посмотреть другие проекты Arduino

Gikfun DV 6V ~ 30V Многофункциональный модуль времени задержки срабатывания триггера Переключатель реле таймера Цифра светодиодный дисплей Micro USB 5V для Arduino EK1945 -

Параметры продукта:
Напряжение: 6 В ~ 30 В (поддержка micro USB 5.0 В)
Выходная мощность: не более 30 В постоянного тока, 5 А переменного тока или 220 В 5 А
Ток покоя: 20 мА
Рабочий ток: 50 мА
Рабочая температура: -40 ℃ ~ 85 ℃
Размер: 6,2 * 3,8 * 1,7 см / 2,44 * 1,49 * 0,67 дюйма
Диапазон времени: от 0,1 секунды до 999 минут (плавно регулируется)
Источник сигнала запуска: Триггер высокого уровня напряжения (3,0 В ~ 24 В), заземление сигнала и заземление системы не подключены, чтобы улучшить способность системы к помехам (или Вы можете подключить их).
Изоляция оптопары: улучшите способность защиты от помех, после настройки параметра он будет запоминать навсегда.Предупреждение: контакт реле пассивен и производит электричество; 1 канал имеет функцию управления вкл / выкл.

Режим работы:
P1: После срабатывания сигнала переключатель подключается на время «OP», затем отключается; в течение времени «OP»:
P1.1: если триггерный сигнал снова, он недействителен.
P1.2: если сигнал триггера снова, время перезапуска.
P1.3: если сигнал триггера снова, переключатель отключен, остановите отсчет времени.
P-2: После подачи сигнала выключатель отключается на время «CL», затем переключатель подключается на время «OP» и отключается по истечении времени.
P3.1: После запуска сигнала переключатель подключается на время «OP», затем переключатель отключается на время «CL» и входит в цикл. Если сигнал триггера во время цикла, переключатель отключается и останавливает отсчет времени. Время цикла (LOP) может быть установлено.
P3.2: После включения питания сигнал триггера не требуется, переключатель будет подключен на время «OP», затем отключен на время «CL» и войдет в цикл. Можно установить время цикла (LOP).
P-4: Функция удержания сигнала. Если есть сигнал триггера, время будет сброшено, переключатель останется подключенным; когда сигнал исчезнет, ​​он отключится по истечении времени «OP».Во время отсчета времени, если есть сигнал, отсчет времени будет сброшен.
OP: Время подключения. CL: Время отключения. LOP: время цикла (1 ~ 999, «---» означает бесконечное количество раз).
C-L Спящий режим: в течение 5 минут, без работы; nix

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

Конфиденциальность и файлы cookie

Файлы cookie - это крошечные файлы данных, которые хранятся в вашем веб-браузере, когда вы посещаете веб-сайт. На www.electromaker.io мы используем файлы cookie, чтобы персонализировать ваш опыт и помочь нам выявлять и устранять ошибки.

Использование файлов cookie и аналогичных технологий в течение некоторого времени было обычным явлением, и файлы cookie, в частности, важны при предоставлении многих онлайн-услуг. Таким образом, использование таких технологий не запрещено Правилами, но они требуют, чтобы людям рассказывали о файлах cookie и им был предоставлен выбор в отношении того, какие из их действий в Интернете будут отслеживаться таким образом. (Офис уполномоченного по информации)

Наша политика в отношении файлов cookie

Чтобы в полной мере использовать www.electromaker.io, пользуйтесь персонализированными функциями и убедитесь, что веб-сайты работают на полную мощность, ваш компьютер, планшет или мобильный телефон должен будет принимать файлы cookie.

Наши файлы cookie не хранят конфиденциальную информацию, такую ​​как ваше имя, адрес или платежные реквизиты: они просто содержат информацию о том, как вы используете наш сайт, чтобы мы могли улучшить ваш опыт и исправить любые ошибки.

Если вы предпочитаете ограничивать, блокировать или удалять файлы cookie с www.electromaker.io или любой другой веб-сайт, вы можете использовать для этого свой браузер. Все браузеры индивидуальны, поэтому проверьте меню «Справка» в вашем конкретном браузере (или в руководстве к мобильному телефону), чтобы узнать, как изменить настройки файлов cookie.

Вот список основных файлов cookie, которые мы используем, и для чего мы их используем:

  • Electromaker - сеанс входа в систему
  • Google Analytics - Аналитика
  • Twitter - лента Twitter

Управление файлами cookie

Каждый веб-браузер обрабатывает файлы cookie по-разному, следуйте инструкциям для выбранного браузера:

Визуальная разработка для Arduino от Mitov Software

Пользователи Visuino (Программное обеспечение) должны принять эти условия лицензии.Если вы отказываетесь принять условия лицензии, вы не можете использовать это программное обеспечение и имеете право вернуть его в течение 30 дней с даты покупки и получить обратно свои деньги. Для вашего удобства копия этого лицензионного соглашения будет храниться в вашей системе во время установки.

Эта лицензия предоставляет вам следующие права:

У вас есть неисключительная лицензия на Программное обеспечение. Название и все нематериальные права на Программное обеспечение являются собственностью Mitov Software.

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

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

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

Описание ограничений.

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

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

Mitov Software предоставляет ограниченную гарантию со следующими ограничениями:

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ MITOV И ЕГО ПОСТАВЩИКИ ОТКАЗЫВАЮТСЯ ОТ ВСЕХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТНОСИТЕЛЬНО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ОТСУТСТВИЕ ОТВЕТСТВЕННОСТИ ЗА КОСВЕННЫЕ УБЫТКИ. В МАКСИМАЛЬНОЙ СТЕПЕНИ, РАЗРЕШЕННОЙ ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ, НИ В КОЕМ СЛУЧАЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ MITOV И ЕГО ПОСТАВЩИКИ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ОСОБЫЕ, СЛУЧАЙНЫЕ, КОСВЕННЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ, КАКИЕ-ЛИБО (ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЙ, УБЫТКИ БИЗНЕСА, ПОТЕРЯЮЩИЕ БИЗНЕСА) ДЕЛОВАЯ ИНФОРМАЦИЯ ИЛИ ЛЮБЫЕ ДРУГИЕ УБЫТКИ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

Таймер реакции Arduino с ЖК-дисплеем

/ *

Таймер реакции Arduino с использованием ЖК-дисплея RGB 16x2 символов

Дерек Моллой, DCU, Ирландия.

Использование ЖК-библиотеки из:

http://www.arduino.cc/en/Tutorial/LiquidCrystal

* /

#include // Включить ЖК-библиотеку

// Настроить дисплей с 4 битами - R / W привязан к GND

LiquidCrystal lcd (13, 12, 5, 6, 7, 8); // RS, E, D4-D7

int lcdRedPWMPin = 11; // красный канал подсветки RGB

int lcdGreenPWMPin = 10; // зеленый канал RGB-подсветки

int lcdBluePWMPin = 9; // синий канал RGB-подсветки

int ledPin = 2; // красный светодиод остановки

int buttonPin = 3; // кнопка таймера реакции

// Состояния выполнения

long randomDelayTime; // содержит случайное количество времени

boolean prepareState = true; // в вводном режиме

boolean isTiming = false; // отсчитываем время нажатия

long timerStartMillis; // время запуска таймера

long timerEndMillis; // время завершения таймера

// Функция для установки цвета подсветки с использованием значений RGB

void setDisplayRGB (int r, int g, int b)

{

analogWrite (lcdRedPWMPin, r); // использование выводов ШИМ означает любой оттенок

analogWrite (lcdGreenPWMPin, g); // красный, зеленый, синий

analogWrite (lcdBluePWMPin, b); // 2 ^ 24 комбинации

}

// Функция настройки - вызывается только один раз

void setup () {

pinMode (ledPin, OUTPUT); // красный светодиод - это выход

pinMode (buttonPin, INPUT); // кнопка - это вход

setDisplayRGB (255,255,255); // белый дисплей

lcd.begin (16, 2); // 16 столбцов по 2 строки

randomSeed (analogRead (0)); // использовать неподключенный контакт для заполнения случайной последовательности

}

void loop () {

if (prepareState) {// состояние подготовки - выдача команды на нажатие кнопки

lcd.setCursor (0,0) ; // установить курсор на 0,0 (вверху слева)

lcd.print ("Тестер реакций:"); // строка в верхней строке

lcd.setCursor (0,1); // следующая строка

lcd.print ("[Нажмите кнопку]"); // строка в следующей строке

if (digitalRead (buttonPin) == true) // если кнопка нажата

{

lcd.clear (); // очищаем дисплей

lcd.setCursor (0,0);

lcd.print ("---- Готов -----");

randomDelayTime = случайный (10000); // это случайная величина, которая будет использоваться 0-10 секунд

while (digitalRead (buttonPin) == true) {} // ждать, пока кнопка не будет отпущена

prepareState = false; // завершено состояние подготовки - перейдем к

}

}

else // не в состоянии подготовки

{

if (! isTiming) // таймер не запущен, поэтому мы приостанавливаем на случайное количество

{

задержка (randomDelayTime); // задержка на случайную сумму

digitalWrite (ledPin, HIGH); // по окончании - установить высокий уровень красного светодиода

setDisplayRGB (255,0,0); // установить красную подсветку ЖК-дисплея

lcd.setCursor (0,0); // нажать сейчас message

lcd.print ("<НАЖАТЬ СЕЙЧАС>");

isTiming = true; // теперь мы готовы запускать временные реакции

timerStartMillis = millis (); // получаем текущее время

}

else // теперь мы измеряем реакцию человека

{

if (digitalRead (buttonPin) == true) // когда они нажимают кнопку

{

timerEndMillis = millis (); // получаем текущее время

digitalWrite (ledPin, LOW); // выключаем красный светодиод

long разница = timerEndMillis - timerStartMillis; // затраченное время равно разнице между

lcd.чистый(); // очищаем ЖК-дисплей

lcd.setCursor (0,0);

if (difference == 0) // Если разница равна 0, они удерживали кнопку - или супермены!

{

setDisplayRGB (255,0,0); // Сообщение об ошибке красным цветом

lcd.print ("Shenanigans");

lcd.setCursor (5,1);

lcd.print («Афут»);

}

else // действительное время

{

setDisplayRGB (0,255,0); // Заключительное сообщение зеленым цветом

lcd.print ("Ваше время было:");

lcd.setCursor (0,1);

жк. Принт (разность);

lcd.print ("мс"); // миллисекунды

}

delay (5000); // оставить сообщение на экране на 5 секунд

isTiming = false; // снова готов начать отсчет времени

prepareState = true; // все готово к запуску

setDisplayRGB (255,255,255); // установить белый цвет подсветки ЖК-дисплея

}

}

}

}

70.Секундомер и таймер Arduino

Всем привет!

Сегодня я собираюсь объяснить вам, как создать секундомер и таймер Arduino, которые можно использовать для проектов, основанных на времени. Читайте дальше, чтобы узнать больше об этом проекте.

Аппаратные компоненты, используемые в этом проекте

  • Arduino Uno
  • USB-кабель типа A / B
  • Макетная плата без пайки - Полный +
  • Модуль ЖК-дисплея с интерфейсом I2C - 16x2
  • Потенциометр - 10K
  • Кнопки (x5)
  • Модуль активного зуммера (KY-012)
  • Светодиод - Красный
  • Резисторы (x6) - 10 кОм (x5) и 220 Ом (x1)
  • Перемычки между штекерами - 10 см и 20 см
  • Перемычки - для уменьшения использование проводов

Установка оборудования





Подключения

Потенциометр 10K
  • S - A0
  • (+) - 5V
  • (-) - Земля (GND)
Активный модуль зуммера
  • S - D7
  • (+) - 5V
  • (-) - Земля (GND)
Модуль ЖК-дисплея 16x2 с интерфейсом I2C
  • GND - Земля
  • VCC - 5V
  • SDA - A4
  • SCL - A5
Кнопки
  • (+) - 5V
  • (-) - Земля (GND)
  • S - D2, D3, D4, D5, D6

Кодирование

Теперь я объясню вам, как этот проект в реальном времени работает, и вы можете понять кодировку по этой идее.

Кнопки и их функции
  • D2 - Установить таймер обратного отсчета
  • D3 - Запустить таймер обратного отсчета
  • D4 - Запустить секундомер. Второе нажатие сбрасывает секундомер.
  • D5 - Приостановить секундомер
  • D6 - Переключение между режимами секундомера и таймера

Вы должны запрограммировать кнопки на дребезг. Когда кнопка, подключенная к D2, нажата, микроконтроллер Arduino отображает показания потенциометра на секунды (0-60). Когда вы нажимаете кнопку, подключенную к D3, счетчики уменьшаются на 1, и когда счет достигает нуля, красный светодиод и зуммер будут иметь задержку в одну секунду, пока они включаются и выключаются.

Создайте переменную для хранения значения, возвращаемого функцией millis (), когда кнопка, подключенная к D4, выдает НИЗКИЙ сигнал. В то время как кнопка D5 выдает сигнал HIGH, другая переменная должна хранить значение, возвращаемое millis (). Значение, хранящееся в первой переменной, должно быть вычтено из значения, хранящегося во второй переменной. Результат необходимо разделить на 1000, чтобы получить количество секунд, прошедших с момента запуска секундомера. Красный светодиод должен загореться, когда кнопка D5 посылает НИЗКИЙ сигнал, а кнопка D4 посылает ВЫСОКИЙ сигнал.

Если у кого-то есть вопросы по поводу объяснения кода, свяжитесь со мной по адресу [email protected].

Окончательный вид

Если у кого-то есть какие-либо сомнения или предложения по этому проекту, пожалуйста, оставьте комментарий ниже или отправьте мне письмо по адресу [email protected].

.

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

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