Control led indicator WB: различия между версиями
м (Орфография) |
|||
(не показаны 4 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Управление светодиодным индикатором контроллера}} | {{DISPLAYTITLE:Управление светодиодным индикатором контроллера Wiren Board 6.7}} | ||
== Описание == | == Описание == | ||
В контроллере есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам gpio контроллера и управляются с помощью ШИМ (PWM). | В контроллере [[Wiren_Board_6 |Wiren Board 6.7]] есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам gpio контроллера и управляются с помощью ШИМ (PWM). | ||
Подробнее об использовании ШИМ читайте в статье «[[Buzzer |Звуковой излучатель]]». | Подробнее об использовании ШИМ читайте в статье «[[Buzzer |Звуковой излучатель]]», а об индикаторе в [[Wiren_Board_6 |описании контроллера]]. | ||
Для управления светодиодами | Для управления светодиодами мы будем использовать драйвер <code>leds-pwm</code>. Документация по нему есть в репозитории на [https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/leds/leds-pwm.txt Github]. | ||
Драйвер предоставляет пользователям интерфейс в <code> | Драйвер предоставляет пользователям интерфейс в <code>sysfd</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>. |
Версия 15:37, 22 ноября 2020
Описание
В контроллере Wiren Board 6.7 есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам gpio контроллера и управляются с помощью ШИМ (PWM).
Подробнее об использовании ШИМ читайте в статье «Звуковой излучатель», а об индикаторе в описании контроллера.
Для управления светодиодами мы будем использовать драйвер leds-pwm
. Документация по нему есть в репозитории на Github.
Драйвер предоставляет пользователям интерфейс в sysfd
, который имеет параметры:
/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 с.