Как сделать таймер на ардуино – Arduino и таймер на millis()

Содержание

Таймер на Ардуино с настройкой включения и выключения

Всем привет! Собрав таймер на Ардуино из этой инструкции, вы сможете контролировать включение и выключение ваших устройств в нужное вам время. Это могут быть ночные фонари, система орошения сада и т.д. Мы воспользуемся Ардуино, дисплеем и RTC 1307, отображающим и управляющим временем. Вы можете задать часы «ВКЛ» и «ВЫКЛ» при помощи 4 кнопок, что позволит вам изменять настройки микросхемы таймера.

Также вы научитесь создавать часы, базирующиеся на Ардуино. Я приложил схему из fritzing и видео, так что вы без проблем соберёте данное устройство.

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

Шаг 1: Материалы

  • Arduino Uno
  • Модуль RTC 1307
  • Дисплей 16X2
  • Модуль реле 5V
  • Подстроечный потенциометр 10K
  • Резистор 1K
  • Резисторы 10K x 4 штуки
  • Кнопки x 4 штуки
  • Макетная плата, джамперы.

Шаг 2: Устанавливаем часы

Следуйте схеме из Fritzing.

Соедините 5V и GND с Ардуино с соответствующими контактами (Красный – 5V, синий – земля)

Дисплей к Ардуино:

  1. VSS к GND
  2. VDD к 5V
  3. VO к центру потенциометра
  4. RS к пину 2
  5. RW к GND
  6. EN или E к пину 3
  7. D0 NC
  8. D1 NC
  9. D2 NC
  10. D3 NC
  11. D4 к пину 4
  12. D5 к пину 5
  13. D6 к пину 6
  14. D7 к пину 7
  15. A к 5V
  16. K к GND через резистор 1K
  17. Остальные контакты потенциометра на 5V и GND

RTC к Arduino:

  • SDA к пину 4
  • SCL у пину 5
  • GND и 5V

Шаг 3: Устанавливаем время

Пришло время настроить часы. Запустите код «Set time RTC». Этот скетч возьмёт данные о дате и времени из вашего компьютера прямо во время компиляции кода и использует их для программирования RTC. Если у вас на компьютере неправильные установки, то поправьте их перед запуском программы. Затем нажмите кнопку Upload, чтобы немедленно загрузить откомпилированный код.

Внимание: Если вы скомпилируете код, а загрузите его позже, то данные о времени устареют.

Далее откройте окно Serial Monitor, чтобы увидеть, что время было установлено.

Файлы

Шаг 4: Часы

После того, как установите время, откройте и загрузите скетч «Clock with RTC LCD». Потенциометр в схеме нужен для настройки контрастности дисплея, покрутите его, чтобы чётко видеть символы.

Файлы

Шаг 5: Устанавливаем таймер

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

Пины 8,9, 10 и 11 соединены с GND через резисторы 10K. Когда вы нажмете на кнопку, то на контакты пойдёт напряжение 5V.

Реле соединяется с пином 12. С помощью него можно управлять вашими устройствами, но будьте осторожны с максимальной нагрузкой на реле!

Шаг 6: Таймер

Откройте и загрузите код «Timer with on off set point». Нажимайте кнопки, чтобы сместить время назад или вперёд. Если электронный таймер будет в пределах настроенного интервала, то он начнет работать сразу же. Если же он не попадает в нужный интервал, то будет ждать час «ВКЛ».

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

Файлы

Весь код написан мной, кроме настройки времени на RTC и дата-логгера Adafruit. Надеюсь, эта инструкция как собрать простой таймер своими руками была для вас полезна!

masterclub.online

Урок 39. Реле времени: управление устройствами по таймеру

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

Каждый из четырёх каналов нашего реле времени может выдавать не только логические уровни (1/0 — вкл/выкл), но и сигналы ШИМ (включать приборы на определённую мощность).

В реле времени имеется 20 таймеров (их количество можно уменьшить или увеличить до 128, указав нужное число в строке 16 скетча). Один таймер включает только одно устройство (канал) на заданный промежуток времени, не влияя на работу остальных устройств (каналов). Каждому устройству (каналу) можно назначить несколько таймеров, следовательно, включать и выключать каждое из устройств можно несколько раз в сутки и на разную мощность. При отключении питания, таймеры реле не сбиваются, так как их настройки хранятся в энергонезависимой памяти Arduino. Текущее время также не сбивается, так как оно берётся из модуля часов реального времени, который снабжен батарейкой.

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

Нам понадобится:

Для реализации проекта нам необходимо установить библиотеки:

  • LiquidCrystal_I2C для работы с символьными ЖК дисплеями.
  • iarduino_Encoder_tmr для работы с энкодерами через аппаратный таймер.
  • iarduino_RTC для работы с модулями реального времени.
  • Библиотеки EEPROM, Wire и pgmspace используемые в скетче, входят в стандартный набор Arduino IDE.

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Видео:


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

Trema модуль RTC и дисплей LCD1602 I2C подключаются к аппаратной шине I2C через Trema I2C HUB, а Trema энкодер можно подключать к любым (цифровым или аналоговым) выводам Arduino, их номера указываются в скетче (в примере использованы выводы D4, D7 и D8). Для удобства подключения используется Trema Shield.

Приборы подключаются к каналам 1-4:
  • Маломощные приборы с питанием 5 В постоянного тока до 20 мА можно подключать напрямую к одному из каналов.
  • Приборы с питанием до 30 В постоянного тока подключаются через силовой ключ.
  • Приборы с питанием от сети 220 В переменного тока подключаются через твердотельное или электромеханическое реле.
Алгоритм работы:

Режим просмотра времени: При включении питания на индикаторе отображается текущее время, дата и день недели. Номера включённых каналов отображаются в правом верхнем углу дисплея.

Меню: Для входа в меню нужно нажать на энкодер. Далее поворачивая экодер вправо или влево можно выбрать разделы «ТАЙМЕРЫ», «ЧАСЫ», «ВЫХОД», для входа в требуемый раздел нужно опять нажать на энкодер.

Меню>часы: В данном разделе меню, поворачивая энкодер вправо или влево, можно выбрать разделы «ВРЕМЯ», «ДАТА», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер.

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

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

Меню>таймеры: В данном разделе меню, поворачивая энкодер вправо или влево, можно выбрать один из установленных таймеров (для их редактирования) или разделы «НОВЫЙ ТАЙМЕР», «СТЕРЕТЬ ВСЕ ТАЙМЕРЫ», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер. Установленные таймеры отображаются в виде строки из времени их старта/сброса и номера канала «00:00-00:00-0».

Меню>таймеры>новый таймер: Выбор данного раздела приведёт к созданию нового таймера, на экране отобразится надпись «НОВЫЙ ТАЙМЕР СОЗДАН» после чего Вам будет предложено ввести время старта/сброса и указать номер канала (который будет включаться данным таймером). Данный раздел меню недоступен если установлены все таймеры.

Меню>таймеры>стереть все таймеры: Выбор данного раздела приведёт к удалению всех таймеров, на экране отобразится надпись «ВСЕ ТАЙМЕРЫ УДАЛЕНЫ». Данный раздел меню недоступен если нет ни одного установленного таймера.

Меню>таймеры>00:00-00:00-0: Вместо «00:00-00:00-0» будет строка из времени старта/сброса таймера и номера канала которым он управляет. Данный раздел меню предназначен для редактирования выбранного таймера, поворачивая энкодер вправо или влево, можно выбрать разделы «ВРЕМЯ И КАНАЛ», «ПОВТОРЫ», «УРОВЕНЬ СИГНАЛА», «СТЕРЕТЬ ТАЙМЕР», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер.

Меню>таймеры>00:00-00:00-0>время и канал: Этот раздел меню предназначен для установки (редактирования) времени старта/сброса таймера и номера канала которым он управляет. Устанавливаемый в данный момент параметр (час старта, минута старта, час сброса, минута сброса, номер канала) должен мигать. Выбор значения осуществляется поворотом энкодера, а переход к следующему значению, нажатием на энкодер.

Меню>таймеры>00:00-00:00-0>повторы: Этот раздел меню предназначен для установки (редактирования) повторов таймера по дням недели, в которые он должен срабатывать. Под устанавливаемым в данный момент параметром (ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС) должен мигать курсор. Поворот энкодера устанавливает или сбрасывает стрелочку под устанавливаемым параметром, если она установлена зн

lesson.iarduino.ru

Таймер на Arduino

Таймер на Arduino.

Скачать скетч (файл расширения flp устанавливается на Arduino при помощи Flprog)

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

Trema модуль RTC и дисплей LCD1602 I2C подключаются к аппаратной шине I2C через Trema I2C HUB, а Trema энкодер можно подключать к любым (цифровым или аналоговым) выводам Arduino, их номера указываются в скетче (в примере использованы выводы D4, D7 и D8). Для удобства подключения используется Trema Shield.

Приборы подключаются к каналам 1-4:
  • Маломощные приборы с питанием 5 В постоянного тока до 20 мА можно подключать напрямую к одному из каналов.
  • Приборы с питанием до 30 В постоянного тока подключаются через силовой ключ.
  • Приборы с питанием от сети 220 В переменного тока подключаются через твердотельное или электромеханическое реле.
Алгоритм работы:

Режим просмотра времени: При включении питания на индикаторе отображается текущее время, дата и день недели. Номера включённых каналов отображаются в правом верхнем углу дисплея.

Меню: Для входа в меню нужно нажать на энкодер. Далее поворачивая экодер вправо или влево можно выбрать разделы «ТАЙМЕРЫ», «ЧАСЫ», «ВЫХОД», для входа в требуемый раздел нужно опять нажать на энкодер.

Меню>часы: В данном разделе меню, поворачивая энкодер вправо или влево, можно выбрать разделы «ВРЕМЯ», «ДАТА», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер.

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

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

Меню>таймеры: В данном разделе меню, поворачивая энкодер вправо или влево, можно выбрать один из установленных таймеров (для их редактирования) или разделы «НОВЫЙ ТАЙМЕР», «СТЕРЕТЬ ВСЕ ТАЙМЕРЫ», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер. Установленные таймеры отображаются в виде строки из времени их старта/сброса и номера канала «00:00-00:00-0».

Меню>таймеры>новый таймер: Выбор данного раздела приведёт к созданию нового таймера, на экране отобразится надпись «НОВЫЙ ТАЙМЕР СОЗДАН» после чего Вам будет предложено ввести время старта/сброса и указать номер канала (который будет включаться данным таймером). Данный раздел меню недоступен если установлены все таймеры.

Меню>таймеры>стереть все таймеры: Выбор данного раздела приведёт к удалению всех таймеров, на экране отобразится надпись «ВСЕ ТАЙМЕРЫ УДАЛЕНЫ». Данный раздел меню недоступен если нет ни одного установленного таймера.

Меню>таймеры>00:00-00:00-0: Вместо «00:00-00:00-0» будет строка из времени старта/сброса таймера и номера канала которым он управляет. Данный раздел меню предназначен для редактирования выбранного таймера, поворачивая энкодер вправо или влево, можно выбрать разделы «ВРЕМЯ И КАНАЛ», «ПОВТОРЫ», «УРОВЕНЬ СИГНАЛА», «СТЕРЕТЬ ТАЙМЕР», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер.

Меню>таймеры>00:00-00:00-0>время и канал: Этот раздел меню предназначен для установки (редактирования) времени старта/сброса таймера и номера канала которым он управляет. Устанавливаемый в данный момент параметр (час старта, минута старта, час сброса, минута сброса, номер канала) должен мигать. Выбор значения осуществляется поворотом энкодера, а переход к следующему значению, нажатием на энкодер.

Меню>таймеры>00:00-00:00-0>повторы: Этот раздел меню предназначен для установки (редактирования) повторов таймера по дням недели, в которые он должен срабатывать. Под устанавливаемым в данный момент параметром (ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС) должен мигать курсор. Поворот энкодера устанавливает или сбрасывает стрелочку под устанавливаемым параметром, если она установлена зн

lesson.iarduino.ru

Таймер на Arduino

Таймер на Arduino.

Скачать скетч (файл расширения flp устанавливается на Arduino при помощи Flprog)

Ссылки на компоненты:

Ардуино UNO — http://ali.pub/z6n3u

ЖК-дисплей LCD1602 (синий экран) — http://ali.pub/alnru

Модуль расширителя интерфейса (I2C) — http://ali.pub/dwj5n

1-канальный Релейный Модуль — http://ali.pub/1gl93z

Таймер на Arduino

Таймер на Arduino — управление энкодером.

Скачать скетч (файл расширения flp устанавливается на Arduino при помощи Flprog)

Ссылки на компоненты:

Ардуино UNO — http://ali.pub/z6n3u

ЖК-дисплей LCD1602 (синий экран) — http://ali.pub/alnru

Модуль расширителя интерфейса (I2C) — http://ali.pub/dwj5n

Энкодер KY-040 — http://ali.pub/1h6eim

1-канальный Релейный Модуль — http://ali.pub/1gl93z

Таймер на Arduino — управление энкодером

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

Скачать скетч (файл расширения flp устанавливается на Arduino при помощи Flprog)

Ссылки на компоненты:

Ардуино UNO — http://ali.pub/z6n3u

ЖК-дисплей LCD1602 (синий экран) — http://ali.pub/alnru

Модуль расширителя интерфейса (I2C) — http://ali.pub/dwj5n

Энкодер KY-040 — http://ali.pub/1h6eim

1-канальный Релейный Модуль — http://ali.pub/1gl93z

Оставьте комментарий:

arduinoprom.ru

Кухонный таймер [Амперка / Вики]

Проекты на Arduino и Slot Shield

Простой электронный таймер запустит обратный отсчёт и громко пропищит о его окончании. Временной интервал задаётся ручкой потенциометра, а отсчёт запускается и останавливается кнопкой.

Видеоинструкция

Что потребуется

Как собрать

Скетч

Прошейте контроллер скетчем через Arduino IDE.

timer.ino
// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay2.h>
 
// номер аналогового пина пищалки
#define POT_PIN     A0
// номер цифрового пина пищалки
#define BUZZER_PIN  2
// номер цифрового пина кнопки
#define BUTTON_PIN  4
 
// создаём объект класса QuadDisplay и передаём номер пина CS
QuadDisplay qd(9);
 
// переменная для подсчёта времени
unsigned long prevMillis = 0;
 
// переменная для хранения таймера
int reverseTimer;
 
void setup()
{
  // инициализация дисплея
  qd.begin();
  // функция установки таймера
  settingTimer();
}
void loop()
{
  // если время таймера не дошло до нуля и прошла 1 секунда
  if ((reverseTimer > 0) && ((millis() - prevMillis) > 1000)) {
    // выводим значение на дисплей
    qd.displayInt(--reverseTimer);
    // запоминаем текущее время
    prevMillis = millis();
    // если таймер дошёл до нуля
    if (reverseTimer == 0) {
      // подаём звуковой сигнал и выводим «Off» на дисплей
      qd.displayDigits(QD_NONE, QD_O, QD_f, QD_f);
      tone(BUZZER_PIN, 4000, 200);
    }
  }
  // если нажата кнопка
  if (!digitalRead(BUTTON_PIN)) {
    // подаём звуковой сигнал
    tone(BUZZER_PIN, 500, 500);
    delay(1000);
    // выполняем настройку таймера
    settingTimer();
  }
}
 
// функция настройки таймера
void settingTimer()
{
  // пока кнопка не нажата
  while (digitalRead(BUTTON_PIN)) {
    // считываем значения с потенциометра
    reverseTimer = analogRead(A0);
    // и выводим его на дисплей
    qd.displayInt(reverseTimer);
    delay(30);
  }
  // после нажатия кнопки, подаём звуковой сигнал
  tone(BUZZER_PIN, 2000, 200);
  delay(300);
  tone(BUZZER_PIN, 3000, 200);
  delay(300);
  tone(BUZZER_PIN, 4000, 200);
}

Что дальше?

FAQ

Где скачать и как установить необходимые библиотеки?

У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте?

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

Вставьте QuadDisplay в правый нижний слот

Прошейте контроллер скетчем через Arduino IDE.

timer.ino
// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay.h>
 
// номер аналогового пина потенциометра
#define POT_PIN     A0
// номер цифрового пина пищалки
#define BUZZER_PIN  2
// номер цифрового пина кнопки
#define BUTTON_PIN  4
// номер цифрового пина дисплея
#define DISPLAY_PIN 11
 
// переменная для подсчёта времени
unsigned long prevMillis = 0;
 
// переменная для хранения таймера
int reverseTimer;
 
void setup()
{
  // функция установки таймера
  settingTimer();
}
void loop()
{
  // если время таймера не дошло до нуля и прошла 1 секунда
  if ((reverseTimer > 0) && ((millis() - prevMillis) > 1000)) {
    // выводим значение на дисплей
    displayInt(DISPLAY_PIN, --reverseTimer);
    // запоминаем текущее время
    prevMillis = millis();
    // если таймер дошёл до нуля
    if (reverseTimer == 0) {
      // подаём звуковой сигнал и выводим «Off» на дисплей
      displayDigits(DISPLAY_PIN, QD_NONE, QD_O, QD_f, QD_f);
      tone(BUZZER_PIN, 4000, 200);
    }
  }
  // если нажата кнопка
  if (!digitalRead(BUTTON_PIN)) {
    // подаём звуковой сигнал
    tone(BUZZER_PIN, 500, 500);
    delay(1000);
    // выполняем настройку таймера
    settingTimer();
  }
}
 
// функция настройки таймера
void settingTimer()
{
  // пока кнопка не нажата
  while (digitalRead(BUTTON_PIN)) {
    // считываем значения с потенциометра
    reverseTimer = analogRead(A0);
    // и выводим его на дисплей
    displayInt(DISPLAY_PIN, reverseTimer);
    delay(30);
  }
  // после нажатия кнопки, подаём звуковой сигнал
  tone(BUZZER_PIN, 2000, 200);
  delay(300);
  tone(BUZZER_PIN, 3000, 200);
  delay(300);
  tone(BUZZER_PIN, 4000, 200);
}

Скачайте и установите библиотеку для работы с «трёхногим» дисплеем.

wiki.amperka.ru

Кухонный таймер на Ардуино. ⋆ ОБЪЕМНИК

Простой кухонный таймер с обратным отсчетом позволяет выставить время от одной минуты до 99 часов 99 минут. Время выводится на дисплей tm1637. Для установки времени использована мембранная клавиатура с четырьмя кнопками, кнопки: +1 , +10, +60 минут и Сброс настроек. Таймер работает на  литиевом li-on аккумуляторе типоразмер 18650 и заряжается от стандартного 5В зарядного устройства для телефона, через micro USB разъем. Мозгом устройства является Arduino ProMini. Скетч написан в IDE Arduino 1.6.7 для Arduino UNO или ProMini.

Arduino — торговая марка аппаратно-программных средств для построения простых систем автоматики.

с обратным отсчетом. С возможностью подключить реле на 3-й пин.

Принципиальная схема кухонного таймера

Для заряда аккумулятора установлен  контроллер  TP4056 с защитой от разряда.

В схеме питания таймера есть повышающий модуль mt3608 DC-DC Step Up, для повышения напряжения до 5В. Выходное напряжение  с платы защиты 4В, для работы Arduino ProMini и высокой яркости свечения led дисплея требуется напряжение 5В.

Вывод времени в конструкции таймера применен led дисплей tm1637.

Модуль звука Buzzer активный 5v.

Обозначение контактов:
VCC – напряжение питания;
I/O – управляющий сигнал;
GND – общий контакт.

Указанные элементы, на принципиальной схеме кухонного таймера: резистор, транзистор и буззер, уже установлены в модуль звука Buzzer, поэтому этот элемент схемы можно заменить модулем.

Модуль адаптер micro USB.

Скетч и библиотеки скачать одним архивом. https://yadi.sk/d/yV8bp2UYHA9A3g 
В Скетч добавил выход на реле 3pin https://yadi.sk/d/3LDD01zEnptOvQ

Используемые компоненты (купить в Китае):

1. Arduino promini; http://got.by/2snd5z
2. Мембранная клавиатура 1х4; http://ali.pub/2sng3r
3. Модуль звука Buzzer; http://ali.pub/2sngdh
4. led дисплей tm1637; http://ali.pub/2sng7g
5. Тумблер 2 Pin; http://ali.pub/2snfxx
6. Повышающий модуль mt3608; http://ali.pub/2snfo0 или http://ali.pub/2snfoz
7. контроллер  TP4056; http://got.by/2snfa0 или http://ali.pub/28346d
8. Честные аккумуляторы 18650, 2500 мА⋅ч; http://got.by/1x51u1
9. Модуль micro USB; http://ali.pub/2sng09
10. Холдер 18650; http://ali.pub/2sndcl
11. Коробочка для поделок; http://ali.pub/2snghk
12. Реле модуль 1 канал http://ali.pub/2s42mk или  http://ali.pub/2s419r или http://ali.pub/2s42aw

Похожие Статьи

с вашего сайта.

objomnik.ru

Реле включения нагрузки по времени на arduino – ARDUINO.MD

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

Для решения этой задачи нам понадобится

  • Arduino Uno – плата, которую мы программируем
  • Sensor shield (или плата прототипирования) – для облегчения соединения датчиков с платой
  • Провода мама-мама
  • Дисплей на 2 строки по 16 символов LCD1602
  • Реле переключения нагрузки
  • Датчик угла поворота с кнопкой
  • Блок питания 9V 1А (для тестирования можно питать устройство и по USB кабелю самой Arduino)

Принцип действия

К реле подключается полезная нагрузка, скажем, двигатель на 12 вольт или насос. Реле выступает в качестве включателя/выключателя, который управляется программно, т.е. мы в коде говорим, когда нам замкнуть контакты в реле (включить насос) или разомкнуть (выключить насос). Датчиком угла поворота мы настраиваем через какой промежуток времени (минут) нам нужно включить реле (ON) и через какой – выключить (OFF). Сколько осталось минут до окончания текущего режима, сколько минут продлится режим включения и выключения – все это мы видим на экране LCD.

Подключение

 

Arduino UNOLCD1602РелеДатчик угла
 VCC 5V VCC + +
 GND GND – GND
 Analog 4 SDA
 Analog 5 SCL
 Digital 5 SW
 Digital 8 S
 Digital 11 CLK
 Digital 12 DT

 

Полный код программы: relay-timer-project.zip

Вот и видео того, что получилось.

Комментарий к видео.

На дисплее строка Active OFF 1 говорит, что активен режим OFF – реле выключено и это продлится еще 1 минуту. Строка ON: 4 OFF: 1 говорит что устройство настроено на периодическое включение реле на 4 минуты, затем выключение на 1 минуту. Крутим датчик угла поворота, регулируя сколько осталось до смены режима (ON/OFF). Нажав кнопку переходим в режим редактирования значения ON, далее по кнопке переходим в режим редактирования OFF, далее по кнопке возвращаемся в основной режим. Спустя минуту после щелчка загорается светодиод на реле (реле включено) и на дисплее видим смену режима на ON, который продлится 2 минуты. Отключаем питание устройства и включаем снова, видим, что настройки ON2 и OFF1 сохранились – при загрузке arduino прочла их из энергонезависимой памяти eeprom. Также режим изменился на OFF.

Заключение

Если все-таки хочется сделать готовое устройство:

  • Плату arduino uno лучше заменить на arduino pro mini – она значительно меньше, дешевле и припаивать провода легче
  • Все соединительные провода между платой и остальными устройствами нужно припаять – ржавчина теперь не повлияет на долговечность соединительных контактов
  • Собрать все в корпус – на вид приличнее будет, да и защита от всяких воздействий (случайно задетого провода)
  • Добавить выключатель – при покидании жилища на длительное время (при том что в этом устройстве нет необходимости в отсутствии хозяев) лучше все-таки обесточивать девайс, и делать это выключателем удобнее, чем выдергивать блок питания из розетки

Удачных экспериментов!

Возможно, вам потребуются файлы:

Понравилось это:

Нравится Загрузка…

Похожее

www.arduino.md

включение нагрузки по таймеру от кнопки (видео)

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

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

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

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

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. Можно сделать несколько таймеров, от разных кнопок, если задать разные входы для нескольких кнопок и подключить их.

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

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

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

xn——7kcglddctzgerobebivoffrddel5x.xn--p1ai

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

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