Энтузиаст представил генератор карт Таро на Raspberry Pi Pico, который использует электромагнитный шум для рандома

r9zbomtrjtxlmvcyfxvu-yy2e4q.jpeg

Энтузиаст сделал портативный генератор карт Таро с небольшим дисплеем на электронных чернилах на базе Raspberry Pi Pico (RP2040). Проект Raspberry Pi Pico Eink Tarot использует электромагнитный шум, чтобы предсказать будущее на основе случайных событий.

z6vujhfdvduc0ybmzocjwc4pole.jpeg

Таро — это карточная колода с символическими картинками на каждой карте. Существует множество вариантов колод, некоторые из них берут своё начало ещё в XV веке. Традиционно карты используются прорицателями, дабы узреть будущее, расставляя карты по различным схемам. Некоторые считают, что карты позволяют экстрасенсам предсказывать будущее, в то время как другие считают, что символы на картах олицетворяют подсознательные убеждения или что смысл возникает из случайного сопоставления изображений, вызывая внезапные прозрения. Третьи считают это чепухой. Четвёртые полагают, что Таро — это лишь ассоциативный инструмент, из которого можно почерпнуть вдохновение.

Разработчик и инженер под ником echo-lalia решил сделать переносную версию колоды Таро с помощью RP2040-Plus (модель с 4 МБ флэш-памяти), электронного e-Ink дисплея Pico e-Paper 3.7 и трёх батареек размера AAA. Устройство снабжено одной большой кнопкой для генерации карт и двумя тумблерами для включения питания/ресета и переключения режимов работы. Дополнительный переключатель служит для переключения между «быстрым» режимом (только вытягивание карты, без анимации) и «полным» режимом (анимация плюс ключевые слова, отображаемые перед извлечением карты).

Электроника гаджета компактно размещена внутри специального чёрного корпуса, элементы которого напечатаны на 3D-принтере.

Помимо просто генерации случайной карты после нажатия картинки в Raspberry Pi Pico Eink Tarot появляются иногда с неожиданным сбоем. Эти глюки намеренно запрограммированы автором проекта, чтобы добавить к атмосфере «цифрового мистицизма». Поскольку в устройстве используется дисплей с электронными чернилами, изображения будут оставаться на экране до тех пор, пока не будет снова активирована кнопка для выбора другой карты из колоды, состоящей из 78 карт Таро.

В алгоритме кода проекта заложена вероятность 1 из 4, что вытащенная карта будет перевёрнута, и вероятность 1 к 20, что она появится с эффектом сбоя. Причём сбои представляют собой закодированные последовательности, которые изменяют изображения буфера кадра перед их отправкой на дисплей. Они включают сбой горизонтального или вертикального отображения (изображение разделяется посередине, при этом две половины отображаются по обе стороны от разделения), сбой цветового канала (меняет местами тёмные и светлые фреймбуферы оттенков серого), сбой HSMB, который применяет неверный режим цветовых данных, что приводит к дёрганному виду изображения, глюку со сдвигом, когда алгоритм дублирует и перемещает одну часть изображения случайным образом, и, наконец, к негативному сбою, когда алгоритм инвертирует изображение, но только если карта уже перевёрнута. Примечательно, что автор в рамках управления памятью делает полный сброс устройства в конце выполнения кода генерации изображения.

Код алгоритма для генерации случайной карты опрашивает все контакты АЦП и выполняет некоторые произвольные математические операции, чтобы выдать рандомное число, которое далее используется в качестве начального значения для инициализации класса Random в проекте.

3kodezrumgwr6yff0f4wtsphiog.jpeg

© Habrahabr.ru