37. Python UIO RGB LED Controller
37.1. Описание
Этот Python-скрипт позволяет управлять RGB-светодиодом, подключённым к Raspberry Pi, через интерфейс UIO (Userspace I/O). Пользователь может выбирать цвета из терминала, а программа управляет GPIO напрямую, используя отображение памяти через /dev/uio0.
37.2. Используемые GPIO (BCM)
GPIO 16 – Красный
GPIO 20 – Зелёный
GPIO 21 – Синий
Эти пины должны быть сконфигурированы в Device Tree и доступны через UIO-драйвер.
37.3. Зависимости
Raspberry Pi с UIO-драйвером (rgb_uio.ko)
Корректно описанный фрагмент в .dts
Python 3.x
Доступ к /dev/uio0 (требует sudo)
37.4. Поддерживаемые команды
red - только красный
green - только зелёный
blue - только синий
yellow - красный + зелёный
cyan - зелёный + синий
magenta - красный + синий
white - все три цвета
off - выключить все
exit - выход из программы
37.5. Как работает
Скрипт открывает /dev/uio0 и отображает регистры GPIO в память.
Через mmap получаем доступ к регистрам GPSET0 и GPCLR0.
Команда пользователя (например, green) управляет масками GPIO и включает нужные пины.
Все цвета сначала сбрасываются, затем активируются нужные.
37.6. Пример запуска
sudo python3 rgb_uio_control.py
37.7. Пример диалога
RGB UIO-контроллер
Команды: red, green, blue, yellow, cyan, magenta, white, off, exit
Выберите цвет: red
>> Установлен цвет: RED
Выберите цвет: yellow
>> Установлен цвет: YELLOW
Выберите цвет: off
>> Установлен цвет: OFF
Выберите цвет: exit
Выход.
37.8. Ошибки и отладка
Permission denied— используйте sudo, доступ к /dev/uio0 только для root./dev/uio0: No such file or directory— UIO-драйвер не загружен или неправильно описан DT.Не горит светодиод — проверьте провода, маски GPIO, соответствие .dts и python.
37.9. Авторы
Разработка: KONTAKT’S LAB Поддержка: ChatGPT (OpenAI) Версия: 1.0