Попали мне как-то в руки вот такие лампы.6 В своё время на них делали индикаторы для калькуляторов. Вроде ничего такого, но цвет свечения такой приятный, что я не удержался. Да и матушка тут намекнула, что ей нужны часы, которые светятся.

Довольно много людей делало такие. Но не одно из решений мне не понравилось. Во первых, очень часто люди собирали из них чуть ли не новогоднюю ёлку — и точки мигают, и секунды бегают, и подсветка переливается.. Ужас. Дискотека 80-х. Второе что не нравилось, это схема включения. Из-за динамической индикации заметно мерцание. Не знаю, как у вас, но до 200 Гц я боковым зрением замечаю его очень хорошо.

В итоге по схемотехнике решил так. +180 В через резисторы сразу на катоды. На каждый катод по транзистору, а управлять ими напрямую с контроллера. У Stm32l1521 ног хватает вполне, к тому ж на борту есть и RTC. Таким образом избавились практически от всех микросхем. Это и удешевило проект, и позволило сделать всё на одностороннем текстолите, всего с парой перемычек. Смешно, большая часть платки управления состоит из разъёмов.

Блок питания остался классический на  MC34063. 57Элементы подобрал похожие, подешевле. Вот такой блок питания получился на время тестов. Думал, что будет греться, сделал площадки фольги большие, оказалось напрасно. Можно скомпоновать поплотнее.

Никаких функций, кроме часов, не стал делать, точнее счёл их лишними. Зачем у часов на полке встроенный календарь? Или термометр. Всё это не сложно, но зачем?! Таким образом программка упростилась до двух строчек. Серьёзно.


RTC_TimeTypeDef mineTime; 

void RTC_WKUP_IRQHandler(void)
{
HAL_RTCEx_WakeUpTimerIRQHandler(&hrtc);
/* USER CODE BEGIN RTC_WKUP_IRQn 1 */

HAL_RTC_GetTime(&hrtc, &mineTime, RTC_FORMAT_BCD);
print_time(mineTime.Hours, mineTime.Minutes);

/* USER CODE END RTC_WKUP_IRQn 1 */
}

STM-ки мало того, что мощнее и дешевле AVR-ок, так ещё и есть для них оригинальный генератор стартового кода. Оно и верно, запомнить и не ошибиться в куче настроек этих процессоров сложно. Сейчас же, написав в уже настроенное прерывание вызов готового запроса имеем значение минут и часов из RTC. Прерывание у нас редкое, так что вся обработка в нем. Функцию print_time() и опрос кнопок в расчёт не беру.4 Там ничего интересного нет.3 Ключики высоковольтные решил сразу под лампой поместить. А лампы закрепить через разъём, его сделал из цанговых линеек.

С корпусом долго сомневался.Долго.До сих пор это делаю. 2На первом экземпляре решил акцент с него убрать совсем. Вот так. Просто, графично, без затей. Только часы.