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