Комментарии 26
Есть несколько замечаний по вашей статье:
Экстримально
Хоть и "Экстрим", но все-таки "экстремально".
1кбайт флеши и 256 байт ОЗУ для микроконтроллеров "низшего" сегмента - это нормально и даже неплохо, есть контроллеры с 32 байт ОЗУ. А тут еще и EPPROM завезли.
51 серия хоть и старье, но на нее есть ну просто куча написанного всего разного - посему норм (есть и контроллеры с USB2 на борту, обеспечивающие High Speed USB). Не жалуйтесь.
Ваше видение несколько неоптимальное. На песочные часы нужно оччень немного флеши и совсем чуть-чуть ОЗУ. А если на чистом асме - то ваще копейки. Но это так, к слову, просто в 1 кбайт флеши можно четверо часов засунуть и еще место останется для наворотов.
Ну и битовая маска светодиодов - как по мне, так ваша реализация самой процедуры (разделение на поименование и потом мучение с набором в скрин) весьма неоднозначна и для меня - очень неудобна и слишком увеличивающая объем кода (исходного).
А так - ну поигрались. Себе что-то доказали. Но оптимальностью не пахнет, ваша "прошика" интереса не представляет. Одно радует - нету посыла на телеграм-канал! А то это уже таким привычным становится, что аж жуть
Гайвер около года назад делал подобные часы (как раз как доработку китайских).
Пока нашел только именно часы с отображением времени.
Ссылочкой не поделитесь?
Вроде бы он ети делал, я тоже впомнил то видео)
https://youtu.be/XumZW0UDqJc?si=clcTi88kuR42oI0j ето часы
А ето похоже как у вас https://www.youtube.com/watch?v=qgJ202w2RAM
Вот страница на его сайте: https://kit.alexgyver.ru/tutorials/digisand/
Понятие "песочные часы" подразумевает вполне конкретный алгоритм анимации, имитирующей пересыпание песка из одной ёмкости в другую. Какие ещё "паттерны анимации"? Тупое последовательное переключение диодиков - так себе достижение. И к песочным часам отношения не имеет.
На первом видео в статье вроде как есть попытка реализовать "песок". Но черезвычайно примитивная и уродливая. С физикой и математикой не справились абсолютно.
В режиме пинов input-only работает триггер Шмидта. Кнопка подключена к пину P3.2, являющемуся выводом внешнего прерывания INT0. Не нужно постоянно опрашивать значение пина P3.2 и бороться с дребезгом контактов кнопки.
Триггер Шмидта на входе не гарантирует отсутствие дребезга контактов. У вас дребезг от 0 до напряжения подтяжки входа, а гистерезис триггера Шмидта - наверное около вольта. Другой вопрос что по этому входу запускается прерывание, которое по идее должно отключать на какое-то время вход, но это другая песня, к триггеру Шмидта отношения не имеет.
Идея сделать такую игрушку интересная, но выбор комплектующих - жесть жестяная, как по мне. У вас 57 выводов. Идем на чипдип, первое что попадается STM32G070RBT6, Микроконтроллер ARM Cortex-M0+, 32-бит, 64МГц, 128К Flash, 32К RAM, 59 I/O [LQFP-64] за 190р и вам не мультепликсировать, просто 57 проводов через резисторы по наверное сотне ом. Платка для QFP-64 стоит рублей 40. Еще кусок оргстекла в котором насверлить (а лучше нафрезеровать на ЧПУ) отверстий и вставить в них светодиоды - все железо, если я правильно понял. Программировать STM32 уже наверное в детсадах учат, спецов по программированию STM32 в стране уже наверное больше чем дворников и ИИ помощников тоже море. При всем этом респект, диванных советчиков еще больше, а как чтобы самому спаять - так в кусты.
А чем вам мультиплексирование не угодило? Вы считаете, что куча проводов будет сильно лучше? Чего-то я думаю, что в жизни куча проводов будет много хуже мультиплексирования. Да и само программирование на низком уровне stm32 все-же сильно сложнее (да, сложнее) простенького 51 контроллера. То, что в ардуино ему какой-то скетч набрать, чтобы хоть как-то работало - ну так еще не щначит, что сам контроллер простой как... ну, кусок алюминия. Он сильно сложнее 51-го, описанного в статье.
Есть готовые модули скажем 8х8 светиков управляемые по i2c, есть и больше.
Совершенно непонятно зачем брать 64ногого монстра для этой задачи, чтобы что ?
Максимальный размер прошивки для STC15W201S 1кБ, размер памяти 256 байт. Экстремально мало.
я недавно к китайским светодиодам генератор сигнала на пик12 делал, больше половины памяти осталось неиспользовано
Спасибо за статью! Сам собрал такие же и тоже интересовался прошивкой, нашел проект Rick-100, но ничего в итоге делать с ним не стал, само устройство показалось не осбо вдохновляющим.
Но зато я упоролся по моддингу другого набора с Али - часов на STC15W408AS. Собрал набор без особых ожиданий, но результат уж очень понравился эстетически - крупные индикаторы, приятный корпус - простота и удобство. Ради интереса поискал альтернативную прошивку и нашел вот этот проект - https://github.com/zerog2k/stc_diyclock. Он уже в тот был заархивирован, так что я сделал форк и начал с ним работать - сначала по мелочи поправил что мне хотелось отрефакторил код, а потом решил расширить и хардварную часть - а именно добавить сегменты для отображения секунд - и все получилось! Да еще и с синхронизацией по NTP - счастью нет предела! :)
Вот ссылка, если интересно: https://github.com/vrtmn/stc_diyclock

Тоже собирал такое. Прошивку https://github.com/zerog2k/ смотрел, неплохо.
Вашу прошивку, увы, не заметил. В описание репозитория на github было бы неплохо добавить тэгов 8051, STC итд. Тогда поиск будет проще.
А так репозиторий выглядит очень достойно, большое спасибо, что поделились. Буду иметь ввиду, когда/если дойдут руки.
Спасибо! (Тэги к репе добавил)
К этим часам я сделал еще один мод - отображение времени в двоичном формате (aka BCD Clock).
Вместо 7-сегментных индикаторов - 3мм светодиоды, минимальные изменения в прошивке, полностью влезает в оригинальный корпус.
На удивление получилось прикольно, поставил на столе, - несколько дней и уже легко время читается (хотя медленнее конечно, по сравнению с обычными). Код пока не опубликовал, но в ближайший месяц сделаю

А когда конструктор приезжает, там контроллер уже прошитый? Но вы решили всё равно сделать самостоятельно ещё лучше, да при таких ограниченных ресурсах? Это круто!
Можно поместить в цифровые часы вместо двоеточия между часами и минутами.
Проблема этой статьи на мой взгляд в том, что явным образом не указано, что понимание, повторение и развитие проекта доступно только "для настоящих техно-ретро-гиков", каковых среди читателей этой статьи один их десяти тысяч примерно. Нет также информации, что такой подход к управлению светодиодами устарел лет 20 назад, когда появились дешевые микроконтроллеры в корпусах с большим количеством выводов.
Почти все, кто прочитают статью, прочитают ее только для того, чтобы убедиться что им недоступно или понимание или повторение или развитие проекта. В то же время функция этой платы простая. Достаточно взять демо-плату Nucleo с необходимым количеством линий ввода-вывода, установить среду разработчика, загрузить пример и изучать код по миганию светодиодом - цикл из кажется 3 операторов. Потом подключать по очереди остальные светодиоды, наращивать код. А когда все будет работать - собрать все на своей плате. Школьнику доступно.
Какая то прям китайско дешманская схема. Светодиоды без токоограничивающих резисторов и сразу на пин порта. 500мВт максимальная мощность рассеивания корпуса dip16.Я к тому что если случится какой то косяк и все светодиоды зажгутся разом то есть шанс спалить проц если не по превышению по току так от перегрева.
Электронные песочные часы с Алиэкспресс