Unicorn HAT Mini: подключение, настройка и начало работы
Используйте Pimoroni Unicorn HAT Mini для отображения радужной анимации, бегущего текста и простых изображений. Unicorn — это лучший карманный генератор радуги для Raspberry Pi!
А если вы любите создавать музыку на SonicPi, то это железка точно не оставит вас равнодушным.
Подключение и настройка
Unicorn HAT Mini совместим со всеми версиями компьютеров Raspberry Pi. В качестве примера используем одноплатный компьютер Raspberry Pi 4.
- Установите Unicorn сверху на Raspberry Pi через 40-контактную колодку пинов ввода-вывода.
- Включите шину SPI.
sudo raspi-config nonint do_spi 0
- Установите библиотеку Unicorn HAT Mini для Python из менеджера пакетов PiP.
sudo pip3 install unicornhatmini
На этом установка библиотеки закончена и можно смело переходить к экспериментам.
Базовые примеры
По умолчанию в репозитории библиотеки присутствуют примеры для ознакомления с модулем.
- Скачайте примеры на 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.
- switch-colors.py
#!/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)
Цифровые часы
В продолжении запустим пример кода цифровых часов с управлением.
- В штатном режиме на плате отображается время.
- При зажатии кнопки
A
, время меняется на дату. При отпускании — дата меняется на время. - При клике на кнопу
B
, меняется цвет светодиодов на случайный.
- digital-clock.py
#!/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)
Элементы платы
Светодиодная матрица
Матричный экран состоит из 119 RGB SMD2121 светодиодов: 17 столбцов по 7 строк.
Драйверы матрицы HT16D35A
Светодиодная матрица подключена к двум драйверам HT16D35A, которые получают команды от Raspberry Pi по SPI и передают на матричный экран. Один чип берет на себя 9 строк по 7 столбцов, а второй остальные — 8 строк по 7 столбцов.
Кнопки управления
С двух сторон матрицы из светодиодов расположены по две кнопки, которые можно применить на включение или отключения событий. Например управлять цветом / яркостью светодиодов или как элемент управления простых игр. А к каким выводом подключены кнопки вы найдёте в разделе распиновка.
Входные пины ввода-вывода
Unicorn HAT Mini подключается к одноплатникам Rasperry Pi сверху через входной 40-пиновый разъём.
Распиновка
Габаритный чертёж
Характеристики
- Модель: Pimoroni Unicorn HAT Mini PIM498
- Совместимость: платы Raspberry Pi
- Разъём модуля: штырьковые соединители GPIO
- Интерфейс модуля: SPI
- Количество светодиодов: 119 (17 строк × 7 столбцов)
- Количество цветов: 262К (64 на каждый цвет R, G, B)
- Тип светодиодов: SMD2121
- Встроенное управление: 4 кнопки
- Размеры: 65×30×10 мм