Пару лет у меня работали часы из китайского набора для сборки. В последнее время на этих часах начали пропадать отдельные сегменты цифр. Так что сейчас нужно иногда прилагать умственное усилие, чтобы понять, сколько времени они показывают. Кроме того, я давно думал сделать себе часы на светодиодной матрице. Вот думаю, время пришло.
Стал я искать готовые варианты часов, и тут оказалось, что простого и удобного варианта для повторения нет. Нужны автономные простые часы-будильник, типа собрал и забыл. Большинство вариантов представляют из себя информеры, причем ввести данные можно только с компьютера. Делать информер без доступа в интернет не вижу смысла, делать простые часы с WiFi тоже не понимаю зачем. Кроме того многие авторы забросили свои разработки. А поизучав их исходники я понял, что исправить их под себя задача мало интересная. Поэтому решил просто написать код с нуля, позаимствовав некоторые идеи у других.
Выбрал самую простую стандартную схемотехнику с минимумом деталей, но с максимумом потенциала. Написал код. Сейчас часы свою функцию выполняют. Думаю какой корпус для них сделать. Мне кажется такой вариант вполне может заинтересовать кого то еще. Поэтому решил поделиться с другими. Проект выложен на GitHub: https://github.com/vikonix/O-Clock.
Что могут часы. Показывают время большими анимированными цифрами, дату, температуру и влажность. Есть будильник, при срабатывании он играет заданную мелодию. Сейчас прошито 5 мелодий. Для будильника можно определить дни недели для срабатывания, время и мелодию. Управление осуществляется 3 кнопками, но достаточно 2-х. Логика управления совершенно простая, никакие инструкции в принципе не нужны. Код легко поддается кастомизации.
Чего сейчас нет: Русских букв, так как их пока вообще нет для маленького шрифта, который используется (или мне не встречались). Нет бегущий строки, тоже пока не вижу в этом смысла.
Комментарии (15) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
В Arduino IDE нужно открыть файл src.ino
[Автор]
[Автор]
//all these commands work on ALL segments
//display brightness: 0 - 15
void setIntensity(uint8_t level);
void setEnabled(bool enabled); // вот эту команду.
Только после отключения нужно не забывать включать обратно.
В любом случае нужно дорабатывать код.
[Автор]
Я добавил в код полное отключение матрицы в темноте.
Обновите исходники.
int v = analogRead(Photo_Pin);
#if 0
нужно вместо 0 написать 1
#if 1
Тогда матрица будет отключаться
[Автор]
нужно вместо 0 написать 1
#if 1
По умолчанию эта логика отключена
Если есть вариант можете скинуть рабочий код.