Arduino часы с будильником

Урок 19. RTC часы с будильником

В предыдущем уроке 18, мы подключили Trema RTC часы реального времени с Trema кнопками и LCD I2C дисплеем к arduino Uno, написали скетч, для установки времени при помощи кнопок.

Теперь расширим функционал получившихся часов, добавив к ним функцию будильника. А код, который будет выполняться при срабатывании будильника выведем в отдельную функцию «Func_alarm_action()», чтоб Вы смогли легко его найти и изменить. Например, при срабатывании будильника, открывать жалюзи, включать свет или музыку, включить через реле тостер или кофе-машину и т.д.

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

  • Arduino х 1шт.
  • RTC модуль Trema на базе чипа DS1307 х 1шт.
  • LCD дисплей LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) х 1шт.
  • Trema Shield х 1шт.
  • Trema-модуль i2C Hub х 1шт.
  • Trema-модуль кнопка c проводами х 3шт.
  • Шлейф «мама-мама»для шины I2С х 2шт.
  • Trema-модуль зуммер х 1шт.
  • Trema-модуль светодиод х 1шт. (белый, синий, красный, оранжевый или зелёный)

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

  • Библиотека iarduino_RTC (для подключения RTC часов реального времени DS1302, DS1307, DS3231)
  • Библиотека LiquidCrystal_I2C_V112 (для подключения дисплеев LCD1602 по шине I2C)

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

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

Подключение модулей RTC и LCD, данного урока, осуществляется к аппаратным выводам SDA, и SCL.

Подключение кнопок: кнопка «SET» к выводу 2, кнопка «UP» к выводу 3 и копка «DOWN» к выводу 4.

Зуммер подключаем к выводу 5, а светодиод к выводу 13 (дублируя встроенный в arduino).

Алгоритм работы кнопок следующий:

  • В режиме вывода даты/времени/будильника (обычный режим):
    • Кратковременное нажатие на кнопку SET переключает режимы вывода: даты/времени/будильника
    • Удержание кнопки SET переводит часы в режим установки даты/времени/будильника (зависит от того, каким был режим вывода)
    • Кнопки UP и DOWN, в режиме вывода будильника, активируют/деактивируют будильник.
      Если будильник активен, то в правом верхнем углу экрана появляется значок будильника.
  • В режиме установки даты/времени/будильника:
    • Кратковременное нажатие на кнопку SET — переход между устанавливаемыми параметрами (сек, мин, час, дни, мес, год, д.н.)
    • Удержание кнопки SET выводит часы из режима установки
    • Каждое нажатие на кнопку UP увеличивает значение устанавливаемого параметра даты или времени
    • Каждое нажатие на кнопку DOWN уменьшает значение устанавливаемого параметра даты или времени
  • Во время работы сигнализации будильника:
    • Удержание любой кнопки в течении 1 секунды, отключает сигнализацию (без выполнения их действий, в любом режиме)

Код программы:

Работа кнопок, вывод и установка времени, описывались в уроке 18, в этом уроке рассмотрим работу будильника:

В начале кода добавляем две константы: PIN_alarm_TONE и PIN_alarm_LED, указывающие номера выводов зуммера и светодиода.
А также добавляем четыре переменные: VAR_alarm_MIN , VAR_alarm_HOUR , VAR_alarm_FLAG1 и VAR_alarm_FLAG2 .

  • VAR_alarm_MIN — переменная в которой хранится значение минут, при котором сработает будильник (по умолчанию 0 минут)
  • VAR_alarm_HOUR — переменная в которой хранится значение часов, при котором сработает будильник (по умолчанию 0 часов)
  • VAR_alarm_FLAG1 — флаг разрешения работы будильника, false — не активен, true — активен (по умолчанию true — активен)
  • VAR_alarm_FLAG2 — флаг указывающий на то, что будильник сработал «сигнализация» (по умолчанию false — не сработал)

Последняя переменная которую мы добавили — MAS_alarm_SYM, она содержит изображение символа будильника для вывода на дисплей.

В функции loop, после вывода информации на дисплей, добавляем проверку: не пора ли включить будильник?

  • если будильник включён (установлен флаг VAR_alarm_FLAG1)
  • если в текущем времени 0 секунд (time.seconds==00)
  • если количество минут текущего времени (time.minutes) равно количеству минут установленных в будильнике (VAR_alarm_MIN)
  • если количество часов текущего времени (time.Hours) равно количеству часов установленных в будильнике (VAR_alarm_HOUR)
    то устанавливаем флаг VAR_alarm_FLAG2 (указывающий на то, что будильник сработал)
  • если установлен флаг VAR_alarm_FLAG2, то запускаем действия будильника (действия описаны в функции Func_alarm_action)
    Так как проверка будильника и запуск функции Func_alarm_action() находится внутри условия if(millis()%1000==0)<. >, то действия будильника будут выполняться один раз в секунду.

Теперь всё готово для создания полного кода:

Разберемся в коде действий будильника:

Действия будильника описаны в функции Func_alarm_action().

В этой функции мы включаем светодиод, далее подаём три коротких звуковых сигнала (с частотой 2000Гц, длительностью и паузой 100мс), после чего выключаем светодиод.

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

Часы, будильник, таймер на Arduino. v1.0

Спецификация набора

То, что у вас уже есть, вы можете удалить в корзине.

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

В качестве железа будем использовать Амперкины тройки, искру и дюймовый OLED дисплей.


0.96inch OLED (A) — это встраиваемый двухцветный (желтый/синий) OLED дисплей с интерфейсом I2C/SPI. Разрешение экрана 128х64 пикселей, а угол обзора более 160 градусов.
Размеры платы 29мм х 33 мм.

Контроллер


Iskra Mini — полноценная Arduino-платформа, только маленькая: всего 33×20 мм.

Обратите внимание, что на плате нет собственного USB-порта.
Поэтому для её прошивки понадобится посредник!
Им может быть другой контроллер Arduino

Характеристики Iskra Mini

  • Микроконтроллер: ATmega328
  • Тактовая частота: 16 МГц
  • Флеш-память: 32 КБ (2 КБ используются загрузчиком)
  • Оперативная память SRAM: 2 КБ
  • Энергонезависимая память EEPROM: 1 КБ
  • Рабочее напряжение: 5 В
  • Входное напряжение: 5,3–12 В
  • Портов ввода-вывода общего назначения: 20
  • Портов с поддержкой ШИМ: 6
  • Портов, подключённых к АЦП: 8 (4 из них на нераспаянных выводах)
  • Разрядность АЦП: 10 бит
  • Аппаратные интерфейсы: UART, SPI, I²C (на нераспаянных выводах)
  • Максимальный ток одного вывода: 40 мА
  • Максимальный ток с пина +5V: 150 мА

Цифровой датчик температуры и влажности


Troyka-Temperature Humidity Sensor DHT11.
Данные температуры и влажности датчик отдаёт по одному проводу в виде цифрового сигнала. Это позволяет передавать данные на расстояние до нескольких десятков метров.
В сердце модуля — популярная среди любителей сенсорная сборка DHT11. Он работает по собственному протоколу. На борту модуля — популярная среди любителей сенсорная сборка DHT11.

  • Напряжение питания: 3–5 В
  • Потребляемый ток при запросе данных: 2,5 мА
  • Потребляемый ток в ожидании: 100 мкА
  • Диапазон температур: 0–50 °С
  • Погрешность температуры: ±2 °С
  • Диапазон влажности: 20–90%
  • Погрешность влажности: ±5%
  • Габариты: 25×25 мм

3D-джойстик


3D Joystick — сделает управление нашим устройством быстрым и удобным.
Модуль-джойстик схож с «грибочком» на манипуляторах PlayStation и XBox. Он комбинирует в себе двухосный джойстик и тактовую кнопку. В нейтральном положении аналоговый сигнал соответствует половине напряжения питания. При перемещении джойстика в одну сторону напряжение будет нарастать, а при движении джойстика в другую сторону — падать. Таким образом, можно получать точное положение ручки джойстика и реагировать на угол наклона, а не только на сам факт наклона ручки. Хотя в этом проекте мы используем только факт наклона.

  • Напряжение питания: 3–5 В
  • Интерфейс по осям X, Y: аналоговый, линейный
  • Интерфейс кнопки: цифровой, бинарный
  • Габариты: 25×25 мм

Управление джойстиком

Нажатие влево — вход в меню настроек
изменяемое значение подсвечивается
нажатие вверх — изменение значения
нажатие вправо — переход к следующему значению
при настройки будильника слева появляется значок «а»
нажатие влево — выход из меню с сохранением изменений
время будильника сохраняется в энергонезависимой памяти

Нажатие вниз — вкл/откл будильника

Когда сработал будильник
первое нажатие на кнопку — отключение пищалки
второе нажатие на кнопку — отключение реле

Пьезодинамик


В нашем проекте нужно пищать. Воспользуемся модулем Buzzer.

  • Номинальная частота: 4 кГц
  • Интенсивность: 80 дБ
  • Номинальное рабочее напряжение: 5 В
  • Габариты: 25,4×25,4 мм

Релейный модуль


Модуль Relay это просто механический рубильник, которым можно управлять при помощи микроконтроллера, такого как Arduino. С помощью реле можно включать и выключать электроприборы, которые подключены к бытовой электросети 220 В. На модуле расположен светодиод, который всегда подскажет — замкнуто реле или нет.
У этого реле есть есть не только нормально разомкнутый (NO) контакт, но и нормально замкнутый (NC). Это удобно.

  • Номинальное напряжение питания: 5 В
  • Номинальное напряжение сигнала: 3–5 В
  • Максимальный ток коммутации: 16 А
  • Коммутируемое переменное напряжение (пиковое): 250 В
  • Потребляемый ток: 87 мА
  • Рабочая температура: −40…+85 °C
  • Магнитная система катушки: моностабильная
  • Рекомендованная частота переключения: до 1 Гц
  • Электрическая износостойкость (NO) контакта: 30×10³ переключений
  • Электрическая износостойкость (NC) контакта: 10×10³ переключений
  • Габариты: 50,8×25,4 мм

Часы реального времени


Модуль RTC — сделан на основе популярного чипа DS1307. Он общается с управляющей электроникой по протоколу I²C / TWI.
Слот предназначен для часовой батарейки размера CR1225 на 3В. Без неё модуль не работает даже с внешним питанием.

  • Напряжение внешнего питания: 4,5–5,5 В
  • Напряжение питания батарейки: 2–3,5 В
  • Потребляемый ток: 500 нА (≈6 месяцев на батарейке)
  • Выходной интерфейс: I²C
  • Габариты: 25,4×25,4 мм

Элемент питания

CR1225 – литиевая батарейка

  • Напряжение: 3В
  • Типоразмер cr1225

Ардуино — будильник

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

С помощью пульта можно будет программировать время и будильник, включать/отключать будильник и устанавливать отсрочку сигнала. То есть делать всё не вставая с дивана.

Так же будут рассмотрены варианты получения времени.

Что понадобится

Ардуина

Дисплей TM1637

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

Пищалка (buzzer)


Можно не покупать, а выдрать откуда-либо.

ИК-приёмникнаиболее предпочтительный вариант — TSOPxx38 (38kHz).


Во втором варианте потребуется модуль часов DS 3231.

В начале вариант для тех, кто хочет просто подключить/проверить дисплей.

Подключаем всё по следующей схеме:

Скачиваем и устанавливаем библиотеку для дисплея TM1637.

Если всё работает, то переходим к следующему этапу. Добавим к схеме светики, пищалку и ик-приёмник…

У Вас может быть другая распиновка ик-приёмника. Резисторы 300-1000 ом.

Сначала залейте скетч для обнуления EEPROM…

Теперь я (немного забегая вперёд) опишу алгоритм, а после перейдём к программированию пульта.

Инструкция и как работает

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

Сигнал будильника будет воспроизводиться в течении минуты, после этого будет десятиминутная пауза и снова сигнал в течении минуты. Так будет происходить до тех пор, пока будильник не будет выключен. Если во время воспроизведения сигнала нажать кнопку отсрочки, то звук выключится, а время будильника переведётся на десять минут вперёд.
То есть в момент пробуждения у вас будет два варианта — нажать кнопку отключения будильника и вылезать из тряпок, либо нажать кнопку отсрочки и поваляться ещё 10 минут.

После нажатия кнопки отключения будильника установленное время вернётся к изначальному значению. То есть, вы встаёте в 7:00 утра, будильник зазвенел, вы нажали отсрочку, будильник перевёлся на 7:10, зазвенел, вы таки встали, отключили будильник — будильник вернулся на 7:00.

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

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

Нажатия на кнопки сопровождаются звуковым сигналом.

Программирование пульта

Возьмите какой-нибудь пульт, например от телевизора, выберите на нём несколько кнопок (у большинства пультов есть незадействованные кнопки), которыми будете управлять часами/будильником.

Нужно выбрать кнопки, которыми вы будете устанавливать время на часах (прибавлять/убавлять часы и минуты, четыре кнопки). Кнопки для установки будильника — прибавлять/убавлять часы и минуты будильника (четыре кнопки). Кнопка включения/отключения будильника (одна кнопка). Кнопка отсрочки будильника на 10 минут (одна кнопка) и кнопка перехода в режим установки будильника (одна кнопка). Кнопки для регулировки яркости (две штуки).

Заполучим коды кнопок. Откройте «Монитор последовательного порта», и нажмите на пульте кнопку, которой планируете устанавливать время — прибавлять часы:


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

Скопируйте это число и вставьте в скетч:

Повторяем процедуру для кнопки убавления часов:

Вставляем в скетч:

Проделываем всё то же самое для остальных кнопок. В скетче есть комментарии.

И в конце комментируем или удаляем строку…

Заливаем скетч, и в принципе можно пользоваться. Однако такой способ подсчёта времени не выдерживает никакой критики, поэтому предложу пару вариантов. Первый — это использование модуля DS3231 (очень точный и стабильный), а второй — это ежесуточная коррекция времени от большого компьютера. Начну с последнего.

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

Синхронизация от компьютера

Идея заключается в следующем, часы подключены (USB, UART) к компьютеру с запущенной на нём программой, которая «слушает» USB-порт в ожидании запроса от часов. Ровно в 00:00:10 часы отправляют запрос компьютеру, а тот в ответ отсылает часам своё системное время.

Добавим в скетч необходимый функционал. Там где счётчик времени добавим блок отвечающий за запрос…

И в конец основного цикла добавим блок отвечающий за приём:

Не забудьте про коды кнопок пульта.

Далее скачиваем программу chasikom, кладём её в домашнюю папку, подключаем часы к компу и запускаем:

У вас будет свой юзер и возможно другое устройство (/dev/ttyUSB0). Проверить можно так:

Через десять секунд установится точное время.

Если нужна прога для какого-либо роутера, тогда напишите в комментах.

Вариант с DS3231

Добавляем в схему модуль:

Скачиваем и устанавливаем библиотеку DS3231, заливаем новый скетч:

Не забывайте про коды кнопок пульта.

Библиотека для DS3231 написана так, что если отсоединить модуль, то программа зависнет в ожидании ответа от модуля.

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

Ну и наконец скетч для работы с модулем часов и коррекцией времени:

На этом пожалуй всё.

Вступайте в Telegram-группу Arduino

Моя компактная версия метеостанции на Arduino c часами реального времени и будильником

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

Все функции показал в видео ниже, но вот вкратце текстовая инфа.

Помимо стандартного отображения данных, присутствует:

-Полноценное меню, в котором можно выбрать два режима: полный (как на первом фото) и упрощенное только время и температура с влажностью.

-Установка будильника, по умолчанию просто пищит зуммером (работает кстати только во вкладках Meteo и Meteo+, т.е. если будете в меню во время когда должен прозвенеть будильник, то пропустите его, но если очень нужно, то там несложно добавить и в другие вкладки).

В упрощенном виде отображение секунд (431 и 432 стоки) закомментировал с объяснением причины, кому очень нужно-раскомментите, но учтите что перед этим сдвиньте на два курсор влево где выводятся часы и минуты.

Кстати у кого DHT22 тоже на плате, резистор не нужен (я его зачем-то припаял, но на работоспособности не сказалось).

DHT вешается на 1 цифровой пин, зуммер на 11, часы и BMP по I2C (SCL-A5, ASD-A4).

Но может кому понадобится, нарисовал во Fritzing как подключать к lcd шилду.

Код вроде несложный но большой, если будут вопросы «где что», пишите-отвечу.

А вообще комментарии ко всем основным блокам и функциям оставил.

Если кто захочет собрать так же, ссылки на али где покупал сам (не реферальные):

Как Arduino не крути, всё метеостанции выходят.

Что-то кроме них делают?))

Есть у меня еще гексакоптер на плате Ардупилот (фактически это мега со встроенными датчиками). Но поскольку программу писал не я, то здесь и не освещал.
До метеостанции с будильником пока не добрался, но уже почти все есть, может сделаем потом с дочкой, в качестве школьного проекта для девочки 15-16 лет вполне сгодится.
А получается метеостанция, потому что работать с ардуино надо начинать с постройки 3д принтера. Тогда возможностей будет море. А так — только информационные возможности — показания с датчиков. Чтобы управлять механизмами — надо иметь эти механизмы. Тут очень показательна теплица. Нужно сперва спроектировать и построить теплицу, предусмотрев управление с помощью ардуино. А уже потом датчики и программирование, что составляет лишь часть работы.

П.С. а в фильме «Назад в будущее» профессор собаку кормил при помощи запрограммированного контроллера.

Даже моторы с регуляторами такие же, только их больше и контроллер другой. Стоит ли?

ахаха хотите конечно минусуйте, но вот реально, когда вижу пост с участием arduino и датчика температуры, я часто вижу комментарий «как ардуино не крути. » получается комментаторы тоже не блещут креативом )))))

ЛюдЯм нужна чтобы душа развернулась и не свернулась.

А вы тут метеостанции на все лады тычите

Очевидно не институт)

Ну что же, надо с чего-то начинать — все-таки это почти законченный проект, хотя и кажется не рабочим. То есть не то, что он не работает, просто осталось добавить корпус, разместить в положенном месте и запустить. Ну и данные выложить) Например на https://narodmon.ru/

У нас бы за такой курсач препод голову отгрыз.

В самом деле, бедновато для курсача, разве что дело в коде

Надо быть мазохистом, чтобы покупать шилды к Ардуино, а не нормальные I2C устройства.

Не понятно, как вводится время и дата.

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

а отрицательные температуры выводит?

шину i2c тоже надо резисторами подтягивать к плюсу, иначе глючит

быть того не может, почитайте на эту тему на student-proger, там всю подробно и с картинками))

А можно чтобы она ещё измеряла скорость ветра и умела отправлять показания в смс?

Можно, и ещё много чего можно

а можно название всех запчастей для того, что бы сделать данный девайс?

В самом начале видео ( https://youtu.be/O6anHvxnuLM ) на паузе показал, но могу продублировать:

Температура и влажность: DHT22 (не самый точный, для чего-то серьезного лучше bme280 заодно и давление показывает);

Остальные (макетка и lcd) в конце статьи в виде ссылок.

У меня с набора Arduino kit DHT11 — вообще, мне кажется, что влажность он от балды выдает. Температуру еще более-менее. Я через attiny13 данные с датчика забираю, ардуинку на это тратить не захотел.

6ulldog, а как можно с вами связаться? у меня несколько вопросов

А вы из тех, которые считают что лучше купить или что?

наши руки не для скуки

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

Часы, будильник, термометр. На ARDUINO NANO, DS3231.

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

Часы, будильник, термометр. На ARDUINO NANO, DS3231.

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

Красиво. Цвета на картинке поплыли или индикатор дйствительно розовый? Если розовый, дайте пожалуйста ссылку, где брали такой.

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

подскажите, плз, как заменить DS3231 на DS1302 в этом скетче?

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

Красиво. Цвета на картинке поплыли или индикатор дйствительно розовый? Если розовый, дайте пожалуйста ссылку, где брали такой.

немного поиграя с напряжением можно поиграть с оттенком свечения, только осторожно)

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

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

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

подскажите, плз, как заменить DS3231 на DS1302 в этом скетче?

На АЛИ как буханка хлеба стоит!

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

я видел, спасибо.

но есть трудности — 1302 у мну есть, а с Али я не смогу получить ближайшее (хз сколько — год, може меньше) время.

так что пытаюсь слепить и говна и палок =)

DarkGenius, спасибо! хоть понятно куда копать.

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

Делаю часы на WS2812B, с внешним беспроводным термометром. Так же хочу прикрутить IR пульт и сделать функцию лампы настроения ( с этим пока туго т.к. не уживаются пульт и эти светодиоды из-за ограничения по «таймингам», если кто пробовал, то посоветуйте куда копать.)

Использую библ. Adafruit_GFX, Adafruit_NeoMatrix, Adafruit_NeoPixel

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

На максах дополнительный дисплей реализовал.
https://youtu.be/IJ8PPtEiprQ

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

подскажите, пожалуйста, что означает в строке 221

«clock.isArmed1()»? смотрю в библиотеках(скачал уже штук пять) для этого RTC и не вижу такой команды.

или подскажите, плз, какая команда соответствует из библиотеки DS1302?

суть простая — пытаюсь авторский скетч переделать под DS1302

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

статус будильника, включенвыключен

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

«я догадался, что 0,5 и 0,5 это литр, да постеснялся сказать»(с)

UPD. не подскажешь где библиотеку 3231 брал?

пытаюсь разобраться с командами, что б заменить на 1302, но все библиотеки которые мне попадаются не имеют команд, которые в скетче.

UPD1. сам спросил, сам ответил =) вот библиотека

UPD2. всё-таки 1302 это «г» на палочке — создание будильника целый геморр

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

У меня почему то не идет . горят одни восьмёрки. Скетч загрузился без ошибок. индикатор — общий анод. DS3231 предварительно тоже проверял из образцов. В мониторе все показывает нормально. Три раза пересобирал на макетке, думал ошибка. Но всё одно и то же. 🙁

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

Да все есть в самом начале. Повторю еще раз, чтоб рядом было.

Подключение к индикатору и кнопки:

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

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


CommonCathode

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

Индикатор 0.56″, зеленый, с ОА такой

попробую предоставленую Вами CommonAnode и потом отпишусь.

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

Пробовал два типа индикатора. Везде восьмёрки после включения. На 13 пине светодиод мигает — точки работают. Должно ведь без кнопок работать ?! На всякий случай подключил кнопку и попробовал.

Подключение ведь такое: 5v — button — пин:12(или 11,10) — 10k resistor — gnd.

Может не правильно предварительно модуль DS3231 прошил ? Брал из примеров библиотеки.

Раньше делал такие варианты и они работали.

но там сервису никакого нету и будильника. Ну и без модуля реального времени.

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

Вот такой еще проект нашел. Вполне рабочий.

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

Если 13 мигает знать часы идут, похоже я скетчи местами спутал. Где анод там катод и наоборот, исправил. Кнопки просто на корпус, зуммер через сопротивление.

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

не знаю как включенный будильник обозначить.

Неспешным (1 — 1/2 Гц) миганием самой правой точки (возе единиц минут).

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

На этом индикаторе только две в центре точки, активны. В оригинале последняя горит при активном.

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

Там же вроде на картинке видны десятичные точки возле цифр. Они что, не горят? Я имел в виду такой точкой помигать.

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

Где анод там катод и наоборот, исправил.

Теперь все скетчи правильно выше предоставлены — CommonCathode — для катода, CommonAnode — для анода. Теперь все заработало. Только на моем индикаторе точки мигают после 3 и 4 цифр одновременнно. Где, в каком месте поправить ? И для меня наверное лучше в первой половине суток, чтобы в переди нолик был. Минуты, часы кнопками правильно выставляються. Будильник, озвучка — все нармально работает.

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

сравни с первоначальным вариантом, корекция нуля так же в скетче есть надо просто её удалить.
if (Hour > 9) LED_WriteDigit(1, Hour / 10, 0);
изменить на
LED_WriteDigit(1, Hour / 10, 0);

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

точки есть а диодов под ними нет, китайцы.

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

сравни с первоначальным вариантом, корекция нуля так же в скетче есть надо просто её удалить.
изменить на
LED_WriteDigit(1, Hour / 10, 0);

Спасибо. Всё получилось. Нолик в переди появился. А в каком месте править, чтобы точку передвинуть чтобы была после второго знака. А то у меня сейчас секундные импульсы(точки) мигают после третей и четвертой цифр вместе. 🙁

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

Выкладываю мной исправленный рабочий вариант скеча! Замечания принимаются.

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

Здрасте, а какую библиотеку часов используете?

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

Благодарю. А скетчем, где дополнительный экран не поделитесь? В чем там нюансы?

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

В данныймомент переписываю его, там экран из десяти модулей 8х8, вот и все нюансы, как только допишу выложу, можктк присоединится к этой группе в вк. https://vk.com/electronicsprojects

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

У меня индикатор такой. Как видно, две точки Colon (DP2 и DP3) работают с разными Digit (Dig4 и Dig3, соответственно).

В коде из #29, в «void LED_WriteTime()» я изменил:

DP3 засветился. А DP2 никак не получается зажечь.

Знающие, поделитесь фрагментами кода, как зажечь DP2 вместе с DP3, а также заставить их мигать с частотой 1 Гц.

UPD:

Удалось задействовать DP2, взяв кусок кода из топика, и даже обе DP замигали. Но частота мигания 0,5 Гц.

Поэтому вопрос о мигании DP с частотой 1 Гц остается актуальным.

Также наблюдается слабое свечение сегментов. Замеры показали ток 1 мА на сегмент без использования ограничивающего резистора. Отсюда еще вопрос: где в коде можно изменить яркость свечения сегментов?

Читать еще:  Quint oring 24dc 2x20 1x40
Ссылка на основную публикацию
Adblock
detector