O-Clock простые часы на матрице 8х32

vikonix
Offline
Зарегистрирован: 19.05.2019

Приветствую всех. Давно хотел сделать часы на матрице 8х32. Сначала решил взять уже готовый проект. Но посмотрев несколько вариантов понял, что меня они не устраивают. Хотел модернизировать исходники, но как обычно проще все написать с нуля. Собственно, что и сделал. Часть идей позаимствовал в других проектах. Что хотел получить: простые и удобные часы-будильник, без лишнего функционала. Код написан очень просто, его легко модернизировать под себя.

Что они умеют: показывают время большими анимированными цифрами, показывают температуру и влажность, показывают дату. Можно настроить текущее время. Время срабатывания будильника. В качестве звонка играет мелодия, которую можно выбрать (прошито 5 мелодий). Для будильника можно задать дни недели срабатывания.

Проект выложил на GitHub:https://github.com/vikonix/O-Clock

Используется Arduino Nano, линейная матрица 8х32, часы DS3231, датчик влажности BME280.

Для управления используется 3 кнопки, но достаточно 2-х. Есть регулятор яркости на фоторезисторе. Звук - пассивный пьезо излучатель.

Проект можно собрать под Arduino IDE или под PlatformIO.

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

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А можно посмотреть видео, как все это выглядит? 

vikonix
Offline
Зарегистрирован: 19.05.2019

Да конечно, картинки и видео сделаю.

vikonix
Offline
Зарегистрирован: 19.05.2019

Часы на макетной плате.

Видео работы на Youtube
https://www.youtube.com/watch?v=nfpqMhbTryE

 

boogifreeman
Offline
Зарегистрирован: 20.05.2019

Часики супер. Сегодня вечером попробую собрать

vikonix
Offline
Зарегистрирован: 19.05.2019

Буду рад если понравятся.

vikonix
Offline
Зарегистрирован: 19.05.2019

Нарисовал схему.

boogifreeman
Offline
Зарегистрирован: 20.05.2019

Получилось ура! Спасибо за проект) Есть вопрос, какой именно фоторезистор вы используете? И ещё, один светодиод тусклей всех светится, не пойму с чем связанно.

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

Первые мои часы, не устану говорить спасибо. Очень порадовал проект!

vikonix
Offline
Зарегистрирован: 19.05.2019

Рад что все получилось.

Фоторезистор китайский: 5528 Light Dependent Resistor LDR 5MM Photoresistor
Яркость отдельной точки, это какая-то особенность конкретной матрицы.
Информер пока делать не планирую.

Шрифт часов легко можно подправить под себя, нужно исправить следующую структуру

const byte font_digit_6x8[] PROGMEM = {
0x7e, 0xff, 0x81, 0x81, 0xff, 0x7e, //'0' 0
0x00, 0x82, 0xff, 0xff, 0x80, 0x00, //'1' 1
0x82, 0xc1, 0xa1, 0x91, 0xcf, 0xc6, //'2' 2
0x42, 0xc1, 0x89, 0x89, 0xff, 0x76, //'3' 3
0x38, 0x24, 0xa2, 0xff, 0xff, 0xa0, //'4' 4
0x4f, 0xcf, 0x89, 0x89, 0xf9, 0x71, //'5' 5
0x7c, 0xfe, 0x8b, 0x89, 0xf9, 0x70, //'6' 6
0x01, 0x81, 0xf1, 0xf9, 0x8f, 0x07, //'7' 7
0x76, 0xff, 0x89, 0x89, 0xff, 0x76, //'8' 8
0x0e, 0x9f, 0x91, 0xd1, 0x7f, 0x3e, //'9' 9

вместо 16-ричной цифры '0x7e' можно прописать отдельные биты '0b01111110'.
здесь каждая цифра описывает один столбик цифры. В цифре 6 столбиков. Старший-левый бит нижняя точка, правый младший - верхняя точка. Если ошибиться с битами, ничего страшного, будет просто не правильная цифра, можно менять по одной цифре.
 

boogifreeman
Offline
Зарегистрирован: 20.05.2019

Если бы я бы только умел программировать...))) Вообще не шарю в этом. Но все же спасибо)

vikonix
Offline
Зарегистрирован: 19.05.2019

boogifreeman пишет:

Если бы я бы только умел программировать...))) Вообще не шарю в этом. Но все же спасибо)

там вообще не нужно программировать )
просто в любом редакторе подправить сами буквы
и пересобрать проект

vikonix
Offline
Зарегистрирован: 19.05.2019

могу помочь
нужно написаль любую цифру в виде 0или1, 1-светится
например 2 из примера

11111011
11111011
11011011
11011011
11011111
11011111

Если смотреть боком, то единицы образуют цифру 2

 

boogifreeman
Offline
Зарегистрирован: 20.05.2019

Понял, буду пробовать

vikonix
Offline
Зарегистрирован: 19.05.2019

Нужно сохранить все запятые и перед каждой цифрой писать 0b

0b11111011,
0b11111011,
0b11011011,
0b11011011,
0b11011111,
0b11011111,

vikonix
Offline
Зарегистрирован: 19.05.2019

Исправил ошибку с вычислением дня срабатывания будильника.
Добавил автоманитеский вывод темперетуры и даты каждую минуту.

boogifreeman
Offline
Зарегистрирован: 20.05.2019

Получилось)

vikonix
Offline
Зарегистрирован: 19.05.2019

Круто!!!
Можно еще и мигающее двоеточее подкрутить.
Например чтобы точка прыгала вверх-вниз
или просто мигало
или менялось крестиком ) 

vikonix
Offline
Зарегистрирован: 19.05.2019

Исправил потенциальную ошибку с миганием курсора.

andrva
Offline
Зарегистрирован: 26.10.2018

Добрый день.

Ошибка при компиляции в Alarm.h. Подскажите, как исправить ? IDE 1.8.9.

 

 
In file included from sketch\oclock.h:35:0,
                 from sketch\main.cpp:31:
sketch\alarm.h: In member function 'bool Alarm::CheckTime(const DateTime&)':
alarm.h:148:35: error: 'const class DateTime' has no member named 'dayOfTheWeek'
       (m_Days & DayOfTheWeek(time.dayOfTheWeek()))
                                   ^
 

 

vikonix
Offline
Зарегистрирован: 19.05.2019

Добрый день.

Эта функция находится во внешней библиотеке RTCLib
Какая у Вас установленна версия? У меня используется 1.2.1
 

vikonix
Offline
Зарегистрирован: 19.05.2019

У меня кстати, такая же версия IDE 1.8.9.

andrva
Offline
Зарегистрирован: 26.10.2018

name=RTClib
version=1.2.1
author=Adafruit

andrva
Offline
Зарегистрирован: 26.10.2018

Все библиотеки скопировал в SRC. Вызываю так - #include "RTClib.h"

vikonix
Offline
Зарегистрирован: 19.05.2019

andrva пишет:

Все библиотеки скопировал в SRC. Вызываю так - #include "RTClib.h"

Более правильно настроить версии библиотек в самом IDE

Меню Sketch->Include library->Manage libraries...

В поле поиска ввести "rtclib" и посмотреть, что будет найдено.
 

andrva
Offline
Зарегистрирован: 26.10.2018

Решил, еще в main.cpp исправил на #include "RTClib.h". Всем спасибо.

vikonix
Offline
Зарегистрирован: 19.05.2019

Сейчас судя по всему конфлики версий библиотеки в IDE и локальной в проекте

andrva
Offline
Зарегистрирован: 26.10.2018

Да, разница между #include "RTClib.h" и #include <RTClib.h>  огромная.

vikonix
Offline
Зарегистрирован: 19.05.2019

Подправил позицию курсора при выставлении даты.

vikonix
Offline
Зарегистрирован: 19.05.2019

Сделал несколько исправлений. В частности сдвинул цифры в середину. Точка активности будильника сливается с некоторыми цифрами, но вроде не сильно мешает.
Если есть цифровой шум в зумере на высокой яркости нужно добавить электролит 470 мкФ и керамику 0.1 мкФ по питанию.