Control led indicator WB: различия между версиями
м (→Описание) |
Taraant (обсуждение | вклад) м (Исправил ссылку на leds-pwm.txt, так как ссылка битая.) |
||
(не показаны 4 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Управление светодиодным индикатором контроллера | {{DISPLAYTITLE:Управление светодиодным индикатором контроллера}} | ||
== Описание == | == Описание == | ||
В контроллере | В контроллере есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам gpio контроллера и управляются с помощью ШИМ (PWM). | ||
Подробнее об использовании ШИМ читайте в статье «[[Buzzer |Звуковой излучатель]]» | Подробнее об использовании ШИМ читайте в статье «[[Buzzer |Звуковой излучатель]]». | ||
Для управления светодиодами используется драйвер <code>leds-pwm</code>. Документация по нему есть в репозитории на [https://github.com/ | Для управления светодиодами используется драйвер <code>leds-pwm</code>. Документация по нему есть в репозитории на [https://github.com/wirenboard/linux/blob/dev/v5.10.y/Documentation/devicetree/bindings/leds/leds-pwm.txt Github]. | ||
Драйвер предоставляет пользователям интерфейс в <code> | Драйвер предоставляет пользователям интерфейс в <code>sysfs</code>, который имеет параметры: | ||
* <code>/sys/class/leds/<led>/brightness</code> — текущая яркость светодиода <code><led></code>. Может принимать значения от 0 до <code>max_brightness</code>. | * <code>/sys/class/leds/<led>/brightness</code> — текущая яркость светодиода <code><led></code>. Может принимать значения от 0 до <code>max_brightness</code>. | ||
* <code>/sys/class/leds/<led>/max_brightness</code> — максимальная яркость светодиода <code><led></code>. | * <code>/sys/class/leds/<led>/max_brightness</code> — максимальная яркость светодиода <code><led></code>. |
Текущая версия на 18:52, 28 августа 2024
Описание
В контроллере есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам gpio контроллера и управляются с помощью ШИМ (PWM).
Подробнее об использовании ШИМ читайте в статье «Звуковой излучатель».
Для управления светодиодами используется драйвер leds-pwm
. Документация по нему есть в репозитории на Github.
Драйвер предоставляет пользователям интерфейс в sysfs
, который имеет параметры:
/sys/class/leds/<led>/brightness
— текущая яркость светодиода<led>
. Может принимать значения от 0 доmax_brightness
./sys/class/leds/<led>/max_brightness
— максимальная яркость светодиода<led>
./sys/class/leds/<led>/trigger
— режим работы. Для постоянного горения нужно выбратьnone
; для мигания —timer
.
Если параметром trigger
выбран timer
, то будут доступны опции:
/sys/class/leds/<led>/delay_on
— время перед включением светодиода, миллисекунды./sys/class/leds/<led>/delay_off
— время перед отключением, миллисекунды.
Параметр <led>
может принимать значения green
или red
.
Примеры
Управление из Bash
Вы можете управлять светодиодами из оболочки Bash через предоставленный драйвером sysfs-интерфейс.
В контроллерах Wiren Board есть команды, которые упрощают работу со светодиодами:
led_on <led> #Включение светодиода <led> на максимальную яркость.
led_off <led> #Выключение светодиода <led>.
led_blink <led> #Включение мигания светодиода <led> с периодом в 1с.
Эти команды доступны при выполнении
wb_source hardware
Пример bash-скрипта с использованием вспомогательных команд и sysfs-интерфейса:
#!/bin/bash
. /etc/wb_env.sh
wb_source hardware
led_on green
led_blink red
echo 250 > /sys/class/leds/red/delay_on
echo 250 > /sys/class/leds/red/delay_off
В примере мы включили зеленый светодиод на полную яркость, а красный будет мигать с периодом 0.5 с.
Управление с помощью Python
Для Python мы сделали обертку вокруг sysfs-интерфейса, которая доступна в модуле wb_common. Модуль входит в состав предустановленного на контроллер deb-пакета python-wb-common. Исходный код обертки доступен в нашем репозитории на github.
Пример python-скрипта:
# coding: utf-8
from wb_common import leds
# Настраиваем зелёный светодиод на непрерывное горение на максимальной яркости
leds.set_brightness('green', 255)
leds.set_blink('green', 250, 0)
# Настраиваем красный светодиод на мигание с периодом 0.5с на максимальной яркости
leds.set_brightness('red', 255)
leds.set_blink('red', 250, 250)
В примере мы включили зеленый светодиод на полную яркость, а красный будет мигать с периодом 0.5 с.