Как управлять системными светодиодами с помощью моего программного обеспечения?

В RPi есть 5 светодиодов: OK, PWR, FDX, LNK, 10M.

Я хотел бы знать, можно ли управлять любым из них с помощью программного обеспечения, то есть включать или изменять интенсивность (или даже менять цвет gasp ).

И если да, где я могу это прочитать? Светодиоды могут быть весьма удобным способом сигнализации статуса пользовательского приложения, когда они не требуются для первоначального использования.

60 голосов | спросил Maria Zverina 26 J0000006Europe/Moscow 2012, 00:07:45

7 ответов


54

Светодиод 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 #.

ответил Guy 9 AM00000020000001431 2012, 02:09:14
19

Ни один из встроенных светодиодов не может управляться программным обеспечением - все они используются для других целей.

  • 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, поэтому есть возможность взломать ...

ответил Alex Chamberlain 26 J0000006Europe/Moscow 2012, 00:14:16
6

Вы можете управлять всеми светодиодами, кроме светодиодов 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

ответил czar 2 MonEurope/Moscow2013-12-02T22:32:42+04:00Europe/Moscow12bEurope/MoscowMon, 02 Dec 2013 22:32:42 +0400 2013, 22:32:42
5

Существует более простой способ управления светодиодами LAN из пользовательского пространства. Исходный код доступен из

http://www.raspberrypi.org/forums/viewtopic.php?f = 63 & усилителя; т = 72070

Программа должна быть запущена с помощью sudo.

ответил joan 12 PMpSat, 12 Apr 2014 17:06:43 +040006Saturday 2014, 17:06:43
5

Я могу подтвердить, что с помощью 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

См. ответ Гая для получения большего количества способов управления светодиодами

ответил Patrick 21 FebruaryEurope/MoscowbSat, 21 Feb 2015 09:31:15 +0300000000amSat, 21 Feb 2015 09:31:15 +030015 2015, 09:31:15
4

Я написал программу пользовательского пространства, которая позволяет вам управлять светодиодами Ethernet. Для программы требуется более поздний libusb-1.0 (НЕ старше 0,1). Он работает с LAN9512 (например, на старой малине B), а также с чипами LAN9514 (например, на малине B + или малине 2).

Подробности можно найти здесь: http: //mockmoon-cybernetics .ch /компьютер /малиновый-пи /lan951x-LED-CTL /

ответил blip 20 SunEurope/Moscow2015-12-20T19:56:49+03:00Europe/Moscow12bEurope/MoscowSun, 20 Dec 2015 19:56:49 +0300 2015, 19:56:49
3

С помощью 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")
ответил TomXP411 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 10 Sep 2015 05:57:55 +0300 2015, 05:57:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132