====== 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]]