Управление светодиодным индикатором контроллера

Материал из Wiren Board
Это утверждённая версия страницы. Она же — наиболее свежая версия.

Описание

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