Двухканальный кухонный таймер с часами, построенный на модуле DS3231 и семисегментном индикаторе на драйвере TM1637. Помещается в ATmega168 (но без загрузчика).
- Описание
- Индикация
- Управление
- Как пользоваться
- Подключение компонентов
- Использованные сторонние библиотеки
Два независимых канала могут использоваться как в режиме таймера, т.е. для отсчета заданного интервала времени, так и в режиме будильника, т.е. для срабатывания в заданное время.
Последние десять использованных значений интервала сохраняются в EEPROM и могут быть использованы при следующем запуске таймера.
Ход таймеров продолжается после перезапуска, например, после отключения электроэнергии. При запуске проводится проверка сохраненных данных и, если какой-либо из таймеров был запущен, и время его срабатывания еще не наступило, отсчет времени будет продолжен. Если за время отключения время срабатывания уже прошло, включится звуковой сигнал.
Дополнительно предусмотрен вывод на экран показаний температурного датчика микросхемы DS3231. Для этого в режиме отображения текущего времени нужно нажать на кнопку Up. Если эта возможность не нужна, закомментируйте строку #define USE_TEMP_DATA в файле kitchenTimer.h, это несколько уменьшит размер кода.
Предусмотрена возможность управления яркостью индикатора по датчику освещенности - фоторезистор типа GL5528, подключенный к пину A6. Схема подключения: GND -> R(10k) -> A6 <- Rl <- VCC, где R - резистор 10кОм, Rl - фоторезистор. Если эта возможность нужна, раскомментируйте строку #define USE_LIGHT_SENSOR в файле kitchenTimer.h, в противном случае индикатор всегда будет работать с максимальной яркостью.
Кроме семисегментного индикатора прибор располагает светодиодными индикаторами. Три одноцветных светодиода, показывающих, что в данным момент отображается на экране
- текущее время (или настройка текущего времени);
- таймер 1;
- таймер 2;
И два двухцветных светодиода с общим катодом, отображающих состояние каналов таймера
- светодиод погашен - канал находится в состоянии покоя;
- мигающий зеленый - канал запущен, идет отсчет времени;
- непрерывный зеленый - канал поставлен на паузу;
- мигающий красный - канал сработал;
При срабатывании канала на пять минут включается прерывистый звуковой сигнал.
Для управления используются четыре кнопки
- Set - установка времени;
- Up - увеличение настраиваемой величины;
- Down - уменьшение настраиваемой величины;
- Timer - управление таймерами;
Для сброса сработавшего канала нужно нажать на любую кнопку. При этом звуковой сигнал отключится, индикатор состояния канала погаснет.
Для сброса еще не сработавшего запущенного канала нужно переключиться на него, а дальше можно пойти двумя путями:
- кнопкой Down уменьшить время на экране до нуля (если канал используется в режиме таймера) или до текущего времени (если канал используется в режиме будильника); в этом случае канал будет сброшен;
- одновременно нажать кнопки Up и Down; в этом случае канал так же будет сброшен;
Сброс канала будет подтвержден длинным звуковым сигналом.
После сброса канала вы сможете при необходимости установить новое время для его запуска.
Из любого режима предусмотрен автоматический выход в режим отображения текущего времени при отсутствии активности пользователя, т.е. если за определенный промежуток времени не была нажата ни одна кнопка. В прошивке задан интервал 6 секунд. Для режимов отображения таймеров этот интервал удваивается - 12 секунд. На состояние каналов это не влияет, если они запущены, то отсчет времени продолжится в фоновом режиме.
Кнопка Set
- длинный клик (т.е. удержание кнопки нажатой более 800 милисекунд) - переход в режим настройки времени - настройка часов;
Кнопка Up
- короткий клик - переход в режим отображения температуры;
Кнопка Timer
- короткий клик - переход в режим отбражения таймера 1;
Кнопка Set
- длинный клик - выход в режим отбражения текущего времени; внесенные изменения при этом сохраняются;
- короткий клик - переход в режим настройки минут (из режима настройки часов) или в режим отображения времени (из режима настройки минут); внесенные изменения при этом сохраняются;
Кнопка Up
- короткий клик - увеличение значения на одну единицу;
- длинный клик с удержанием кнопки нажатой - непрерывное увеличение значения со скоростью примерно десять единиц в секунду;
Кнопка Down
- короткий клик - уменьшение значения на одну единицу;
- длинный клик с удержанием кнопки нажатой - непрерывное уменьшение значения со скоростью примерно десять единиц в секунду;
Значение часа может изменяться в пределах от 0 до 23, значение минут - в пределах от 0 до 59, при достижении этих значений происходит переход к противоположному значению, т.е. изменение значения закольцовано.
При любом сохранении времени значение секунд обнуляется.
Кнопка Up
- короткий клик - переход в режим отображения текущего времени;
При включении этого режима на экране устанавливается последнее использованное значение интервала (для режима таймера) или текущее время + последнее использованное значение интервала (для режима будильника).
Кнопка Set
- длинный клик - выход в режим отображения текущего времени; на состояние канала это не влияет, т.е. если он был запущен, то отсчет времени продолжится в фоновом режиме;
- короткий клик - в состоянии покоя (текущий таймер не запущен/не стоит на паузе): вывод на экран следующего сохраненного значения ранее использованного интервала; в остальных случаях выход в режим отображения текущего времени;
Кнопка Up
- короткий клик - увеличение минут на одну единицу; при достижении значения 59 при следующем клике происходит увеличение на единицу значения часов;
- длинный клик с удержанием кнопки нажатой - непрерывное увеличение минут со скоростью примерно двадцать единиц в секунду;
Кнопка Down
- короткий клик - уменьшение минут на одну единицу; при достижении значения 0 при следующем клике происходит уменьшение на единицу значения часов;
- длинный клик с удержанием кнопки нажатой - непрерывное уменьшение минут со скоростью примерно двадцать единиц в секунду;
Значение на экране может меняться в интервале от 00:00 до 23:59. В режиме таймера перейти через эти значения не получится. В режиме будильника интервал срабатывания можно устанавливать в промежутке от текущего времени плюс одна минута до текущего времени минус одна минута.
В режиме запущенного таймера значения так же корректируются кнопками Up и Down.
Кнопка Up + кнопка Down
- одновременный короткий клик - сброс канала
Кнопка Timer
- короткий клик - переход в режим отбражения следующего таймера (из режима таймера 1) или в режим отображения времени (из режима таймера 2); на состояние канала это не влияет, т.е. если он был запущен, то отсчет времени продолжится в фоновом режиме;
- длинный клик - старт или постановка текущего канала на паузу; для режима будильника возможен только старт, постановка будильника на паузу не предумотрена, т.к. не имеет смысла;
- двойной клик - (только в соостоянии покоя - текущий таймер не запущен/не стоит на паузе) переключение режима канала (таймер / будильник);
Длинный и двойной клики подтверждаются звуковым сигналом.
Текущий режим канала отображается в течение полсекунды при входе в него или при переключении режима:
- dur - (duration) режима таймера;
- End - режим будильника;
Текущий режим сохраняется в памяти и используется при следующем включении таймера.
- Из режима отображения текущего времени короткими кликами кноки Timer перейти в нужный таймер (1 или 2). На экране начнет мигать последнее использованное значение интервала таймера.
- Если нужно установить другое значение можно воспользоваться либо кнопкой Set для выбора одного из последних десяти использованных значений, либо кнопками Up и Down для точной подстройки интервала срабатывания таймера.
- Нажать и удерживать в течение примерно одной секунды кнопку Timer для запуска. Старт таймера будет озвучен звуковым сигналом, цифры на экране перестанут мигать, но начнет мигать зеленым цветом индикатор состояния запущенного таймера. Заданное значение интервала будет сохранено для использования в следующий раз.
- После срабатывания таймера (звучит прерывистый звуковой сигнал а-ля китайский будильник, индикатор состояния сработавшего таймера мигает красным цветом) нажать на любую кнопку для отключения сигнала.
Пины для подключения экрана, модуля RTC, кнопок, пищалки, светодиодов и датчика освещенности определены в файле kitchenTimer.h
shButton.h - https://github.com/VAleSh-Soft/shButton
shTaskManager.h - https://github.com/VAleSh-Soft/shTaskManager
TM1637Display.h - https://github.com/avishorp/TM1637
Если возникнут вопросы, пишите на valesh-soft@yandex.ru