Управление светодиодным индикатором контроллера
This is the approved revision of this page, as well as being the most recent.
Описание
В контроллере есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам 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 с.