Как стать автором
Обновить

Комментарии 41

Красивое :)) и устройство и статья.

Интересно наблюдать развитие за последние 20 лет. Сначала было на к155ла3, потом на Attiny/PIC, затем …делаем на Atmega16, потом …на Arduino, а теперь на …ESP32.

Такие часики неплохо бы смотрелись на экране от смартфона. Но там с железом всё намного проще - нужен просто старый рабочий телефон https://habr.com/ru/articles/443052/

Есть разница в источниках точного времени. Либо руками выставлять, опираясь на сигналы точного времени, переданные радиостанцией "Маяк", либо по радиосигналу синхронизироваться с атомными часами, либо просто по NTP. В последнем случае ESP32 я вижу очень даже оправданным.

Отличная идея и реализация. Украшение интерьера =)

Жаль не могу поставить 5 плюсов ! Красота просто неземная !

Переход цифр только последовательный или из любой в любую?

Из любой в любую. Динамически строятся траектории перехода.

В начале статьи GIF, в которой виден ответ на вопрос.

Очень прикольный эффект получился

НЛО прилетело и опубликовало эту надпись здесь

Ваши часы надо запретить - они превращают людей в котов с того мема ;-)

Вот таким и должны быть статьи- где есть и идея и исполнение и результат и описание. Порадовал, спасибо!"

Спасибо. Редки здесь статьи от эмбедеров. А такие качественные - тем более.

Это моя первая статья тут, боялся, что наоборот, мало написал :)

Вроде было где-то упоминание про часы с морфингом на МК, только там каждая цифра была векторной.

Есть подозрение, что то тоже мои были. Следующую статью про них напишу

Было видео в каком-то комментарии не помню к чему, ссылку не могу сходу найти.

Спойлер следующей статьи: Bezier Curves Clock with weather, там рядом есть мои видео и с тонкими линиями. Толстые кривые сложнее сделать.

Ссылка ведёт непонятно куда.

Да, первое видео я уже видел, скорее всего. Теперь сохранил на него ссылку, спасибо. С нетерпением жду про него статью.

Прямо как старые демосцены с морфигами

Немножко смущает такое наложение двух слоев графики, хотя на картинке более менее читаемо. Но можно вокруг каждой "точки" сделать еще окружающую маску черным цветом. и будет точно демосцена.

Такую штуку уже можно показывать в номинации wild, только музыку добавить надо

Цель была не демосцена, а чтобы можно было издалека видеть. Но, вообще, когда графическую библиотеку разрабатывал, учитывал возможный будущий уклон в анимацию как в демосцене, так что мне понятно о чём речь.

Вот ещё древняя темка, если интересно. Работает только с движущимся текстом. Замечали, как на табло прямой шрифт превращается в курсив, если низ запаздывает с обновлением?

Берём табло крайне паршивого разрешения (допустим, 6 строк высотой) и…

  1. Вычертите пиксельный глиф таким, каким он будет эстетичен и легкочитаем.

  2. Обведите пиксельный глиф более плавным и эстетичным векторным глифом так, чтобы при пикселизации он обращался именно в такой пиксельный глиф (т. е. не заходя за центры пикселов там, где не надо, и как минимум слегка заходя за них там, где надо).

  3. Согласно векторному глифу, задайте данные для кернинга (двух-трёх высот достаточно).

  4. Разбейте векторный глиф на отдельные вектора, проходящие через пикселы.

  5. Не пытайтесь сначала строить векторный глиф, а потом пикселизовать его. Обычно он пикселизуется в какую-то дрянь.

Итак, теперь у нас получен векторно-растровый глиф с кернинговыми данными, который при нахождении в целой пиксельной позиции (т. е. при неподвижном тексте) даёт желаемое пиксельное отображение.
Если теперь начать скроллить текст горизонтально, включая и выключая СД сообразно началам и концам векторных интервалов, преимущество субпиксельного разрешения будет в полной мере реализовано, значительно сглаживая грубый глиф до полученного в п. 2 векторного глифа.

В случае, если метод применяется для шахматного расположения СД, за один столбец считается полностью повторяемый по горизонтали паттерн. Так, на рисунке показано знакоместо не 8х5, а 4х10: ширина в 4 СД и высота в 10. Просто эти 10 в каждом столбце расположены не вертикально, а "змейкой".
Кернинг в целых столбцах уже даёт слишком большие ошибки округления и следует использовать дробные величины.

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

Кратко резюмируя это писево — просто храним шрифт не растром X x Y, а в виде дробных величин «начало свечения/конец свечения» для каждого Y. Когда надо показывать текст — зажигаем и гасим светодиоды сообразно началу и концу свечения в нужные моменты, не обрубая их до кратности целому пикселу.

Зрительный аппарат при слежении глазами за движущимся объектом прекрасно сам всё достраивает до полноценной «механической развёртки» (как минимум, за счёт саккад), в результате чего мы получаем по горизонтали разрешение практически в четверть светодиода, то есть виртуальное разрешение увеличивается вчетверо, а шрифт типа «сложено из кирпича» — в плавный и аккуратненький.

Идея интересная, спвсибо, учту на будущее.

Совершенно бомбически!

Требую DIY инструкцию для реализации на старом планшете → чтобы настенные, это же арт-объект))) а то 1,5 дюйма только на стол.

1,5" там каждый дисплей, когда они там два рядом, то это уже 2.74". В текущем виде на уровне глаз мне хватает в зале, но я согласен, думаю наверх в другой комнате надо побольше что-то.

для реалистичной анимации движения точек

Строго говоря, реалистичность для таких табло - это гаснущие и загорающиеся точки. С цифрами из оранжевых круглых точек получилась довольно странная анимация.

А вот смена погодной пиктограммы выглядит реально круто и действительно реалистично во всех смыслах. Именно так могла бы выглядеть анимация даже на механическом табло, у которого пиксели - поворачивающиеся пластины, желтые с одной стороны и черные с другой. Надо и цифры в таком же стиле попробовать сделать.

Прикольно вышло, в коде правда чорт ногу сломит :-)

Надо будет порефакторить и сдёрнуть к себе в плазменные часы :-)

С погодой я бы ещё подумал что-нибудь, чтобы точки перемещались не рандомно или в порядке отрисовки, а по близости координат. Т.е. чтобы в примере на видео, например, солнце хвосты "отращивало", а они не прилетали откуда-то снизу.

Вы первый, кто обратил внимание на код :) Есть такая проблема, согласен. В своё оправдание скажу, что идея развивалась итеративно, постоянно шли эксперименты что как и где показывать, как организовать структуры данных. И делалось это урывками по паре часов в неделю, когда надо какое-то время потратить на мысль "а на чём я остановился и что запланировано дальше". После нескольких месяцев такого режима хочется уже наконец просто дописать проект до результата и не париться о рефакторинге :) Программа работает стабильно, работает как надо - задача выполнена. Рефакторинг оставлен на следующий проект в котором потребуется этот код.

Идея чтобы у солнышка отрастали лучики или наоборот сворачивались у меня была. Планировал решить именно тем способом, что и с цифрами - лучики делать последними точками в списке, тогда все общие будут оставаться на своих местах, а убираться или появляться будут автоматически. Но надо правильный порядок. Потратил много времени на эти символы и на войну с редактором, в котором их делал. Простой символ облака порядка 70 точек, расставлять индексы у более чем 20 иконок так чтобы переходы получились "плавными" -- я быстро устал, поэтому оставил просто в порядке сканирования, эффект тоже прикольный.

На счёт по близости координат -- такая идеяу меня тоже была, но там слишком много вопросов по крайним случаям, отказался от реализации.

Надо будет порефакторить и сдёрнуть к себе в плазменные часы :-)

Я, кстати, читал эту статью, круто вышло!

Здравствуйте!

В качестве платы какую плату от WeAct Studio можно использовать?

у автора используется плата с процом ESP32S который уже не актуален, как бы не должно быть особых проблем с прочими ESP32, но для спокойствия ESP32 без букв или ESP32-S3. При сборке прошивки нужно будет указать правильный тип проца и скорее всего указать GPIO

Главное, чтобы было 2 свободных SPI, по одному на каждый дисплей. Если я правильно помню, то серия -C имеет всего один свободный. Я пользовался обычным ESP32, без -S, -C и прочих вариантов. Серия -S обычно более навороченная, но и более дорогая. Программа на флешке занимает чуть больше мегабайта. Сам удивился, но большая часть занятого места -- стандартные части от ESP-IDF. Для работы после загрузки OS остаётся примерно 300кБ свободной RAM, программа при нормальной работе оставляет в куче 65-75кБ свободными, так что RAM хотя бы 450кБ должно быть. Из представленных на сайте я вижу только ESP32-S3 и ESP32 удовлетворяют требованиям, хотя -S3, я считаю перебором.

Так судя по картинке на NodeMCU-P32S модуль с -S ?

И тут в любом случае есть такая штука что на git частенько есть How To Compile там же ведь нужно указать terget

Мой модуль называется NodeMCU-32S, но чип на нём ESP32, без -S.

да там похоже было две версии, ну да не суть. меня другое заинтересовало: spi то наверное можно один общий на оба модуля и переключать только CS ?

Можно за счёт потери параллельности пересылки, FPS упадёт в два раза.

Красивый эффект, но резкое исчезновение двойки во втором видео - не айс. Может сделать движение всех пикселей в одну точку с исчезновением после достижения конечной точки?

Действительно, пропадает. На самом деле, исчезновение предусмотрено. Скорее всего, случайно его сломал и не заметил из-за редкости возникающего случая.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории