Как управлять системными светодиодами с помощью моего программного обеспечения?
В RPi есть 5 светодиодов: OK, PWR, FDX, LNK, 10M.
Я хотел бы знать, можно ли управлять любым из них с помощью программного обеспечения, то есть включать или изменять интенсивность (или даже менять цвет gasp ).
И если да, где я могу это прочитать? Светодиоды могут быть весьма удобным способом сигнализации статуса пользовательского приложения, когда они не требуются для первоначального использования.
7 ответов
Светодиод OK можно контролировать с помощью программного обеспечения пользователя. Подробности здесь:
http://www.raspberrypi.org/phpBB3//viewtopic.php?p = 136266 # p136266
Подводя итог из вышеизложенного (все кредиты BrianW):
Светодиод OK доступен как /sys /class /leds /led0 /
Драйвер светодиодного ядра имеет триггеры, которые позволяют некоторым другим элементам ядра управлять светодиодом. Триггер по умолчанию для светодиода - «mmc0», что делает его доступным при доступе к SD-карте.
[email protected]:~# cat /sys/class/leds/led0/trigger
none [mmc0]
Вы можете отключить триггер mmc0 следующим образом:
echo none >/sys/class/leds/led0/trigger
СИД можно включить и выключить, используя файл яркости. Минимальная яркость равна 0, а максимальная - 255. Поскольку нет поддержки переменной яркости, любое значение, большее 0, включит светодиод.
echo 1 >/sys/class/leds/led0/brightness
echo 0 >/sys/class/leds/led0/brightness
автоматически устанавливает триггер в «none»
Если вы хотите, чтобы светодиод возвращался к своей функции по умолчанию:
echo mmc0 >/sys/class/leds/led0/trigger
Есть несколько модулей ядра, которые вы можете загрузить (ledtrig_timer и ledtrig_heartbeat), которые будут мигать светодиодом для вас.
modprobe ledtrig_heartbeat
echo heartbeat >/sys/class/leds/led0/trigger
Как только вы выключили триггер mmc0, вы можете использовать GPIO16 для управления светодиодом. Он активен-низкий, поэтому вам нужно установить низкий контакт, чтобы включить светодиод, и высоко, чтобы отключить его.
Из Python вы можете использовать модуль RPi.GPIO для управления выводом 16. Существует также драйвер C #.
Ни один из встроенных светодиодов не может управляться программным обеспечением - все они используются для других целей.
- OK - указывает на доступ к SD-карте.
- PWR - указывает на питание микро-USB-соединения.
- FDX - Full Duplex LAN
- Активность LNK - LAN
- 10M - скорость соединения 10M /100M - если он горит, RPi подключен к 100M.
Теперь, это официальный ответ ... Давайте рассмотрим схему .
Page 4 Светодиод PWR подключается непосредственно к источнику питания, поэтому мы не можем контролировать это в программном обеспечении.
Page 3 FDX, LNK и 10M все подключены к Ethernet-чипу, поэтому мы не можем управлять ими в программном обеспечении (без какого-либо фанк-трафика) ...
Page 4 НО OK фактически управляется GPIO 16, поэтому есть возможность взломать ...
Вы можете управлять всеми светодиодами, кроме светодиодов PWR (как сказано в других ответах).
Но для светодиодов Ethernet вам нужно будет исправить драйвер и перекомпилировать ядро.
Информация о том, как можно перекомпилировать здесь: http://elinux.org/RPi_Kernel_Compilation
Патч и дополнительная информация здесь (при необходимости переводите google): http://everpi.tsar.in/2013/11/patch-para-controlar-os-leds-ethernet-do-raspberrypi.html
После завершения вы сможете контролировать: /sys /class /smsc95xx_leds и eth_fdx, eth_lnk e eth_spd.
Пример: echo 0> /sys /class /smsc95xx_leds /eth_fdx echo 1> /SYS /класс /smsc95xx_leds /eth_fdx
Существует более простой способ управления светодиодами LAN из пользовательского пространства. Исходный код доступен из
http://www.raspberrypi.org/forums/viewtopic.php?f = 63 & усилителя; т = 72070
Программа должна быть запущена с помощью sudo.
Я могу подтвердить, что с помощью Raspberry Pi 2 можно управлять светодиодом PWD!
Светодиод питания управляется файлами в папке
/sys/class/leds/led1
Вы можете отключить его, как светодиод состояния, используя:
echo 0 > /sys/class/leds/led1/brightness # Power LED
echo 0 > /sys/class/leds/led0/brightness # Status LED
См. ответ Гая для получения большего количества способов управления светодиодами
Я написал программу пользовательского пространства, которая позволяет вам управлять светодиодами Ethernet. Для программы требуется более поздний libusb-1.0 (НЕ старше 0,1). Он работает с LAN9512 (например, на старой малине B), а также с чипами LAN9514 (например, на малине B + или малине 2).
Подробности можно найти здесь: http: //mockmoon-cybernetics .ch /компьютер /малиновый-пи /lan951x-LED-CTL /
С помощью Pi 2 вы можете управлять красным и зеленым встроенными светодиодами.
В документации по IoT Windows 10 приведен красный светодиод питания и зеленый светодиод OK на GPIO 35 и 47 соответственно.
https: //ms-iot.github. IO /содержание /EN-US /win10 /образцы /PinMappingsRPi2.htm
Я пробовал использовать IoT для Windows 10 и Python на Raspbian. Оба могут управлять светодиодами, хотя Raspbian делает переопределение светодиодов всякий раз, когда что-то обращается к SD-карте. Предположительно, очистка триггера устранит это поведение.)
Вот пример. (Обратите внимание, что это не отменяет триггер, как указано в предыдущих сообщениях)
print ("Program Start")
import RPi.GPIO as GPIO
import time
channels = [35, 47]
print ("Turning off LED's")
GPIO.setmode(GPIO.BCM)
GPIO.setup(channels, GPIO.OUT)
GPIO.output(channels, GPIO.LOW)
time.sleep(5)
print ("Turning on LED's")
GPIO.output(channels, GPIO.HIGH)
time.sleep(5)
GPIO.cleanup()
print ("Program End")