Найти в Дзене
У Павла!

Делаем умный спиннер на attiny84a с POV дисплеем.

Эта статья наверное самый мой крутой проект. Но к сожалению "хайп" спиннеров уже прошел и моя реализация никому уже не нужна(. Но я все-же оставлю ее тут...

И так, давайте сначала разберемся, что же такое POV (Persistence Of Vision). Persistence of vision refers to the optical illusion that occurs when visual perception of an object does not cease for some time after the rays of light proceeding from it have ceased to enter the eye. The illusion has also been described as “retinal persistence”, “persistence of impressions”, simply “persistence” and other variations. Если перевести, то дословно выглядит так: Постоянство зрения относится к оптической иллюзии, которая возникает, когда визуальное восприятие объекта не прекращается в течение некоторого времени после того, как лучи света, исходящие от него, перестали проникать в глаз.  Иллюзия также была описана как «стойкость к сетчатке»,  «постоянство впечатлений»,  просто «упорство» и другие вариации.

Вообщем простым языком POV display это получаемое изображение путем мерцания светодиодов в движении.

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

После приобретения всех элементов нам нужно заказать саму плату, на которой будем это все распаивать. Схему сделанную в KiCad скачать и изменить под свои нужды можно вот тут. А gerber файлы которую будем отправлять на завод для изготовления  тут. Я заказывал на сайте www.pcbway.com. Минимальное количество 5 плат. Платы пришли очень аккуратные и красивые, мне очень понравились.

Как паяются элементы будет показано в видео в конце статьи. А мы же здесь разберем основные моменты.

Следующим после напаивания всех элементов на плату, контроллер attiny84a-pu нужно запрограммировать. Программировать будем через Arduino, как настроить программу Arduino IDE для программирования через Arduino микроконтроллер attiny84a я описал вот в этой статье:  тут

Единственное при заливке скетча для спиннера нужно будет поменять один параметр, а именно в Инструменты->pin mapping->Clockwise на Counterclockwise. Важно: Если после заливки скетча у  Вас горят два светодиода, то значит с этими параметрами напутали, поменяйте их.

Скетч тоже можете найти там-же у меня на сайте.

Ну а что касается подключения самого спиннера с напаянным уже контроллером схема выглядит вот таким образом:

-2

Распиновку будем считать с лева на право самый верхний пин левый который + это будет 1 потом 2,3,4,5,6 (456 тоже будут считаться во втором ряду с лева на право)

А теперь давайте поговорим о том как создавать картинки на нашем POV display.

Для того чтоб это сделать нам понадобится скачать шаблон:

-3

Данный шаблон имеет окружность разбитую на равные части с шагом в 5 градусов. и Того 72 столбца и 8 строк. 8 строк – это количество светодиодов. Окружность представляет собой полный оборот спиннера. Чтоб нам сделать свой рисунок нужно взять этот шаблон и в paint закрасить те квадраты из которых будет состоять рисунок, вот например как сердце показанное в этом примере:

-4

Итак что мы тут имеем, а имеем мы тут изображение сердца. Программировать сердце будем массивами состоящими из 0 и 1 где пустое поле, там будет 0, где закрашенное там 1. Нумерация идет с края к центру. Тоесть чтоб отобразить самый низ сердца мы пойдем по часовой стрелке. Сначала у нас будет: B10000000, Второй столбец будет: B01000000, Третий такой же: B01000000, и так далее. В итоге сердце будет выглядеть следующим образом:

B10000000,
B01000000,
B01000000,
B00100000,
B00100000,
B00100000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00100000,
B00100000,
B00100000,
B00100000,
B01000000,
B01000000,
B01000000,
B10000000,
B10000000,
B10000000,
B10000000,
B10000000,
B01000000,
B00100000,
B00010000,
B00001000,
B00000100,
B00000010,
B00000001,
B00000001,
B00000010,
B00000100,
B00001000,
B00010000,
B00100000,
B01000000,
B10000000,
B10000000,
B10000000,
B10000000,
B10000000,
B01000000,
B01000000,
B01000000,
B00100000,
B00100000,
B00100000,
B00100000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00100000,
B00100000,
B00100000,
B01000000,
B01000000,
B10000000,

Данный массив будем добавлять в textAndShapes.h.

Собственно на этом все. Демонстрация работы спиннера и пайка компонентов в видео: