Control led indicator WB: различия между версиями

Материал из Wiren Board
Строка 7: Строка 7:
Для управления светодиодами используется драйвер <code>leds-pwm</code>. Документация по нему есть в репозитории на [https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/leds/leds-pwm.txt Github].
Для управления светодиодами используется драйвер <code>leds-pwm</code>. Документация по нему есть в репозитории на [https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/leds/leds-pwm.txt Github].


Драйвер предоставляет пользователям интерфейс в <code>sysfd</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>.

Версия 11:33, 23 ноября 2020

Описание

В контроллере есть светодиодный индикатор, который вы можете использовать для своих задач. Светодиодный индикатор состоит из двух светодиодов зеленого и красного цветов, которые подключены к ножкам 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 с.