Pull to refresh

Comments 41

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

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

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

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

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

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

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

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

UFO landed and left these words here

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

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

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

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

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

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

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

Спойлер следующей статьи: 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 иконок так чтобы переходы получились "плавными" -- я быстро устал, поэтому оставил просто в порядке сканирования, эффект тоже прикольный.

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

у автора используется плата с процом 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

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

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

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

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

Sign up to leave a comment.

Articles