Используйте Pimoroni Unicorn HAT Mini для отображения радужной анимации, бегущего текста и простых изображений. Unicorn — это лучший карманный генератор радуги для Raspberry Pi!
А если вы любите создавать музыку на SonicPi, то это железка точно не оставит вас равнодушным.
Unicorn HAT Mini совместим со всеми версиями компьютеров Raspberry Pi. В качестве примера используем одноплатный компьютер Raspberry Pi 4.
sudo raspi-config nonint do_spi 0
sudo pip3 install unicornhatmini
На этом установка библиотеки закончена и можно смело переходить к экспериментам.
По умолчанию в репозитории библиотеки присутствуют примеры для ознакомления с модулем.
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)
В продолжении запустим пример кода цифровых часов с управлением.
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)
Матричный экран состоит из 119 RGB SMD2121 светодиодов: 17 столбцов по 7 строк.
Светодиодная матрица подключена к двум драйверам HT16D35A, которые получают команды от Raspberry Pi по SPI и передают на матричный экран. Один чип берет на себя 9 строк по 7 столбцов, а второй остальные — 8 строк по 7 столбцов.
С двух сторон матрицы из светодиодов расположены по две кнопки, которые можно применить на включение или отключения событий. Например управлять цветом / яркостью светодиодов или как элемент управления простых игр. А к каким выводом подключены кнопки вы найдёте в разделе распиновка.
Unicorn HAT Mini подключается к одноплатникам Rasperry Pi сверху через входной 40-пиновый разъём.