====== Unicorn HAT Mini: подключение, настройка и начало работы ====== Используйте [[amp>product/pimoroni-raspberry-pi-hat-unicorn-mini?utm_source=man&utm_campaign=pimoroni-raspberry-pi-hat-unicorn-mini&utm_medium=wiki|Pimoroni Unicorn HAT Mini]] для отображения радужной анимации, бегущего текста и простых изображений. Unicorn — это лучший карманный генератор радуги для [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=pimoroni-raspberry-pi-hat-unicorn-mini&utm_medium=wiki|Raspberry Pi]]! {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini.14.jpg?nolink |}} А если вы любите создавать музыку на [[https://sonic-pi.net/|SonicPi]], то это железка точно не оставит вас равнодушным. ===== Подключение и настройка ===== Unicorn HAT Mini совместим со всеми версиями компьютеров [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=pimoroni-raspberry-pi-hat-unicorn-mini&utm_medium=wiki|Raspberry Pi]]. В качестве примера используем одноплатный компьютер [[amp>product/raspberry-pi-4-model-b-2-gb?utm_source=man&utm_campaign=pimoroni-raspberry-pi-hat-unicorn-mini&utm_medium=wiki|Raspberry Pi 4]]. - Установите Unicorn сверху на Raspberry Pi через 40-контактную колодку пинов ввода-вывода.{{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-hardware.png?nolink |}} - [[articles:rpi-guide| Подготовьте Raspberry Pi]]. - [[articles:rpi-interfaces#интерфейс_spi|Включите шину SPI]].sudo raspi-config nonint do_spi 0 - Установите библиотеку [[https://github.com/pimoroni/unicornhatmini-python|Unicorn HAT Mini для Python]] из менеджера пакетов PiP.sudo pip3 install unicornhatmini На этом установка библиотеки закончена и можно смело переходить к экспериментам. ===== Базовые примеры ===== По умолчанию в репозитории [[https://github.com/pimoroni/unicornhatmini-python|библиотеки]] присутствуют примеры для ознакомления с модулем. - Скачайте примеры на Raspberry Pi c GitHub.git clone https://github.com/pimoroni/unicornhatmini-python - Перейдите в директорию с экспериментамиcd unicornhatmini-python/examples ==== Демо ==== Для начала проведите тест матрицы.python3 demo.py После запуска примера, матричный экран продемонстрирует вашим глазам свои возможности радужного свечения и завораживающих переходов. ==== Вывод текста ==== Усложним задачу, выведите бегущую цветную строку с текстом.python3 text.py ==== Вывод изображения ==== Библиотека также позволяет отображать цветные изображения.python3 image.py ==== Считывания кнопок ==== На плате также присутствуют четыре тактовых кнопки. Запустите следующий пример и протестируйте события на клик по каждой кнопке.python3 button-splash.py Это далеко не все базовые примеры, протестировать оставшиеся предлагаем самостоятельно. ===== Собственные примеры ===== Базовые примеры рассмотрели, теперь давайте попробуем создать что то своё. ==== Переключение цветов ==== Для начала зажжём на всех светодиодах по очереди красные, зеленые, синие и белые цвета и так по кругу. Запустите скрипт ниже на вашей Raspberry Pi. #!/usr/bin/env python3 # Библиотека time для задержки import time # Библиотека для работы с модулем Unicorn HAT Mini from unicornhatmini import UnicornHATMini # Выводим информацию как остановить программу print("""Press Ctrl+C to exit!""") # Создаём объект для работы с матрицей unicornhatmini = UnicornHATMini() # Устанавливаем яркость unicornhatmini.set_brightness(0.1) while True: # Включаем красный цвет на RGB-светодиодах unicornhatmini.set_all(255, 0, 0) unicornhatmini.show() time.sleep(1) # Включаем зелёный цвет на RGB-светодиодах unicornhatmini.set_all(0, 255, 0) unicornhatmini.show() time.sleep(1) # Включаем синий цвет на RGB-светодиодах unicornhatmini.set_all(0, 0, 255) unicornhatmini.show() time.sleep(1) # Включаем белый цвет на RGB-светодиодах unicornhatmini.set_all(255, 255, 255) unicornhatmini.show() time.sleep(1) # Выключаем все RGB-светодиоды unicornhatmini.set_all(0, 0, 0) unicornhatmini.show() time.sleep(1) {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-switch-color.gif?nolink |}} ==== Цифровые часы ==== В продолжении запустим пример кода цифровых часов с управлением. * В штатном режиме на плате отображается время. * При зажатии кнопки ''A'', время меняется на дату. При отпускании — дата меняется на время. * При клике на кнопу ''B'', меняется цвет светодиодов на случайный. #!/usr/bin/env python3 # Библиотеки для работы примера import time import datetime from gpiozero import Button from unicornhatmini import UnicornHATMini from random import randrange from signal import pause # Создаём объект для работы с модулем unicornhatmini = UnicornHATMini() # Устанавливаем яркость светодиодов unicornhatmini.set_brightness(0.05) # Переменные red = 0 green = 0 blue = 0 dotson = True previousMinute = -1 mode = "time" # Массив графических чисел numbers = { "0": [ [2, 0], [1, 0], [0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 6], [2, 6], [2, 5], [2, 4], [2, 3], [2, 2], [2, 1], ], "1": [ [0, 1], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [0, 6], [2, 6], ], "2": [ [0, 0], [1, 0], [2, 0], [2, 1], [2, 2], [1, 3], [0, 4], [0, 5], [0, 6], [1, 6], [2, 6], ], "3": [ [0, 0], [1, 0], [2, 0], [2, 1], [2, 2], [2, 3], [1, 3], [0, 3], [2, 4], [2, 5], [2, 6], [1, 6], [0, 6], ], "4": [ [0, 0], [0, 1], [0, 2], [0, 3], [1, 3], [2, 3], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], ], "5": [ [0, 0], [1, 0], [2, 0], [0, 1], [0, 2], [0, 3], [1, 3], [2, 3], [2, 4], [2, 5], [2, 6], [1, 6], [0, 6], ], "6": [ [2, 0], [1, 0], [0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 6], [2, 6], [2, 5], [2, 4], [2, 3], [1, 3], ], "7": [[0, 0], [1, 0], [2, 0], [2, 1], [2, 2], [2, 3], [1, 4], [1, 5], [1, 6] ], "8": [ [2, 0], [1, 0], [0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 6], [2, 6], [2, 5], [2, 4], [2, 3], [1, 3], [2, 2], [2, 1], ], "9": [ [2, 0], [1, 0], [0, 0], [0, 1], [0, 2], [0, 3], [0, 6], [1, 6], [2, 6], [2, 5], [2, 4], [2, 3], [1, 3], [2, 2], [2, 1], ], ":": [[1, 2], [1, 4]], ".": [[1, 6]], } # Кнопки button_a = Button(5) button_b = Button(6) # Функция отображения времени def enable_show_time(button): global mode mode = "time" # Функция отображения даты def enable_show_date(button): global mode mode = "date" # Функция смена цвета def change_color(): global red global green global blue red = randrange(256) green = randrange(256) blue = randrange(256) # Считываем состояние кнопок button_a.when_pressed = enable_show_date button_a.when_released = enable_show_time button_b.when_pressed = change_color def letter(char, offset): for pixel in numbers[char]: x = pixel[0] + offset y = pixel[1] unicornhatmini.set_pixel(x, y, red, green, blue) # Функция отображения времени def show_time(now): global dotson unicornhatmini.clear() timestring = now.strftime("%H%M") letter(timestring[0], 0) letter(timestring[1], 4) if dotson == True: letter(":", 7) letter(timestring[2], 10) letter(timestring[3], 14) unicornhatmini.show() # Функция отображения даты def show_date(now): global dotson unicornhatmini.clear() timestring = now.strftime("%d%m") letter(timestring[0], 0) letter(timestring[1], 4) letter(".", 7) letter(timestring[2], 10) letter(timestring[3], 14) unicornhatmini.show() while True: # Считываем дату и время now = datetime.datetime.now() # Если прошла минута, меняет цвет if now.minute != previousMinute: change_color() # Если флаг установлен в «time», отображаем время if mode == "time": show_time(now) # Если флаг установлен в «date», отображаем дату if mode == "date": show_date(now) dotson = not dotson previousMinute = now.minute time.sleep(0.5) {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-digital-clock.gif?nolink |}} ===== Элементы платы ===== {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-anotation.png?nolink |}} ==== Светодиодная матрица ==== Матричный экран состоит из 119 {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:led-smd2121-datasheet.pdf |RGB SMD2121 светодиодов}}: 17 столбцов по 7 строк. ==== Драйверы матрицы HT16D35A ==== Светодиодная матрица подключена к двум {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:ht16d35a-datasheet.pdf |драйверам HT16D35A}}, которые получают команды от Raspberry Pi по SPI и передают на матричный экран. Один чип берет на себя 9 строк по 7 столбцов, а второй остальные — 8 строк по 7 столбцов. ==== Кнопки управления ==== С двух сторон матрицы из светодиодов расположены по две кнопки, которые можно применить на включение или отключения событий. Например управлять цветом / яркостью светодиодов или как элемент управления простых игр. А к каким выводом подключены кнопки вы найдёте в разделе [[#распиновка|распиновка]]. ==== Входные пины ввода-вывода ==== Unicorn HAT Mini подключается к одноплатникам Rasperry Pi сверху через входной 40-пиновый разъём. ===== Распиновка ====== [[https://pinout.xyz/pinout/unicorn_hat_mini|{{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-pinout.png?nolink |}}]] ===== Габаритный чертёж ===== [[this>_media/products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-dimensions.pdf|{{:products:pimoroni-raspberry-pi-hat-unicorn-mini:pimoroni-raspberry-pi-hat-unicorn-mini-dimensions.png}}]] ===== Характеристики ===== * Модель: Pimoroni Unicorn HAT Mini PIM498 * Совместимость: платы Raspberry Pi * Разъём модуля: штырьковые соединители GPIO * Интерфейс модуля: SPI * Количество светодиодов: 119 (17 строк × 7 столбцов) * Количество цветов: 262К (64 на каждый цвет R, G, B) * Тип светодиодов: SMD2121 * Встроенное управление: 4 кнопки * Размеры: 65×30×10 мм ===== Ресурсы ===== * [[amp>product/pimoroni-raspberry-pi-hat-unicorn-mini?utm_source=man&utm_campaign=pimoroni-raspberry-pi-hat-unicorn-mini&utm_medium=wiki|Pimoroni Unicorn HAT Mini]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/pimoroni-raspberry-pi-hat-unicorn-mini.svg|Векторное изображение модуля]] * [[https://github.com/pimoroni/unicornhatmini-python|Библиотека на Python]] * {{ :products:pimoroni-raspberry-pi-hat-unicorn-mini:ht16d35a-datasheet.pdf |Datasheet на драйвер светодиодной матрицы Holtek HT16D35A}} * [[https://www.youtube.com/playlist?list=PLjMfQ8Gw5Iq4QyyCCtPxVgqnJFPy8T8b8|SonicPi на Pimoroni Unicorn HAT Mini]]