Pull to refresh

Comments 26

Есть несколько замечаний по вашей статье:

Экстримально

Хоть и "Экстрим", но все-таки "экстремально".

1кбайт флеши и 256 байт ОЗУ для микроконтроллеров "низшего" сегмента - это нормально и даже неплохо, есть контроллеры с 32 байт ОЗУ. А тут еще и EPPROM завезли.

51 серия хоть и старье, но на нее есть ну просто куча написанного всего разного - посему норм (есть и контроллеры с USB2 на борту, обеспечивающие High Speed USB). Не жалуйтесь.

Ваше видение несколько неоптимальное. На песочные часы нужно оччень немного флеши и совсем чуть-чуть ОЗУ. А если на чистом асме - то ваще копейки. Но это так, к слову, просто в 1 кбайт флеши можно четверо часов засунуть и еще место останется для наворотов.

Ну и битовая маска светодиодов - как по мне, так ваша реализация самой процедуры (разделение на поименование и потом мучение с набором в скрин) весьма неоднозначна и для меня - очень неудобна и слишком увеличивающая объем кода (исходного).

А так - ну поигрались. Себе что-то доказали. Но оптимальностью не пахнет, ваша "прошика" интереса не представляет. Одно радует - нету посыла на телеграм-канал! А то это уже таким привычным становится, что аж жуть

Ошибку поправил.

А где можно набраться лучших практик программирования прошивок для "слабеньких" контроллеров?

Гайвер около года назад делал подобные часы (как раз как доработку китайских).

Спасибо. Интересно.

Но, на алиэкспресс уже продается как есть вместе с печатной платой.

У Гайвера все же другая матрица и код на ардуино.

Понятие "песочные часы" подразумевает вполне конкретный алгоритм анимации, имитирующей пересыпание песка из одной ёмкости в другую. Какие ещё "паттерны анимации"? Тупое последовательное переключение диодиков - так себе достижение. И к песочным часам отношения не имеет.

На первом видео в статье вроде как есть попытка реализовать "песок". Но черезвычайно примитивная и уродливая. С физикой и математикой не справились абсолютно.

В режиме пинов 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ногого монстра для этой задачи, чтобы что ?

Ага, а есть адресные светодиоды. Но, читаем внимательно заголовок, - а там уже про готовую конструкцию с Аликспреса речь.

Так это тоже в целом готовая. Ну т.е. если что-то менять, то уж точно не мк на 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.Я к тому что если случится какой то косяк и все светодиоды зажгутся разом то есть шанс спалить проц если не по превышению по току так от перегрева.

Sign up to leave a comment.

Articles