RPi에는 5 개의 LED가 있습니다 : OK, PWR, FDX, LNK, 10M.
소프트웨어에서 이들 중 하나를 제어 할 수 있는지, 즉 전원을 켜거나 강도를 변경 (또는 색상 가스 변경 ) 할 수 있는지 알고 싶습니다 .
그렇다면 어디에서 읽을 수 있습니까? LED는 원래 사용에 필요하지 않을 때 사용자 애플리케이션 상태를 신호하는 매우 편리한 방법 일 수 있습니다.
RPi에는 5 개의 LED가 있습니다 : OK, PWR, FDX, LNK, 10M.
소프트웨어에서 이들 중 하나를 제어 할 수 있는지, 즉 전원을 켜거나 강도를 변경 (또는 색상 가스 변경 ) 할 수 있는지 알고 싶습니다 .
그렇다면 어디에서 읽을 수 있습니까? LED는 원래 사용에 필요하지 않을 때 사용자 애플리케이션 상태를 신호하는 매우 편리한 방법 일 수 있습니다.
답변:
OK LED는 사용자 공간 소프트웨어에서 제어 할 수 있습니다. : 여기에 세부 사항 재 : 우리는 온보드 LED를 제어 할 수
위의 요약 (BrianW의 모든 크레딧) :
OK LED는로 사용할 수 있습니다 /sys/class/leds/led0/
.
커널 LED 드라이버에는 "트리거"가있어 커널의 다른 부분에서 LED를 제어 할 수 있습니다. LED의 기본 트리거는 ' mmc0
'이며, 이는 SD 카드에 액세스 할 때 켜집니다.
root@raspberrypi:~# cat /sys/class/leds/led0/trigger
none [mmc0]
mmc0
다음과 같이 트리거를 비활성화 할 수 있습니다 .
echo none >/sys/class/leds/led0/trigger
' brightness
'파일을 사용하여 LED를 켜거나 끌 수 있습니다 . 최소 밝기는 0이고 최대 밝기는 255입니다. 가변 밝기 지원이 없으므로 0보다 큰 값은 LED를 켭니다.
echo 1 >/sys/class/leds/led0/brightness
echo 0 >/sys/class/leds/led0/brightness
밝기를 0으로 설정하면 트리거가 자동으로 "없음"으로 설정됩니다.
LED가 기본 기능으로 돌아가려면 :
echo mmc0 >/sys/class/leds/led0/trigger
로드 할 수있는 커널 모듈이 몇 개 있으며 ( ledtrig_timer
및 ledtrig_heartbeat
) LED를 깜박입니다.
modprobe ledtrig_heartbeat
echo heartbeat >/sys/class/leds/led0/trigger
mmc0
트리거를 끈 후에는 GPIO16을 사용하여 LED를 제어 할 수 있습니다. 액티브 로우이므로 LED를 켜려면 핀을 낮게 설정하고 끄려면 높게 설정해야합니다.
파이썬에서이 모듈 RPi.GPIO
을 사용하여 핀 16을 제어 할 수 있습니다 . C # 드라이버도 있습니다.
샘플 코드
#!/usr/bin/python import RPi.GPIO as GPIO from time import sleep # Needs to be BCM. GPIO.BOARD lets you address GPIO ports by periperal # connector pin number, and the LED GPIO isn't on the connector GPIO.setmode(GPIO.BCM) # set up GPIO output channel GPIO.setup(16, GPIO.OUT) # On GPIO.output(16, GPIO.LOW) # Wait a bit sleep(10) # Off GPIO.output(16, GPIO.HIGH)
echo gpio | sudo tee /sys/class/leds/led1/trigger
한 다음을 사용하여 켜거나 끕니다 echo [0|1] | sudo tee /sys/class/leds/led1/brightness
.
온보드 LED는 소프트웨어로 제어 할 수 없으며 다른 용도로 사용됩니다.
이제 공식적인 답변 입니다. 회로도를 연구 해 봅시다 .
4 페이지 PWR LED는 전원 공급 장치에 직접 연결되어, 그래서 우리는 소프트웨어에서 그것을 제어 할 수 없습니다.
Page 3 FDX, LNK 및 10M은 모두 이더넷 칩에 연결되어 있으므로 소프트웨어에서 펑키 한 트래픽 해킹없이 소프트웨어를 제어 할 수 없습니다.
페이지 4 하지만 OK 실제로 GPIO (16)에 의해 제어, 그래서 해킹의 가능성이 있습니다 ...
사용자 영역에서 LAN LED를 제어하는 간단한 방법이 있습니다. 소스 코드는
http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=72070
프로그램은 sudo로 실행해야합니다.
모든 답변을 제어 할 수 있습니다 (다른 답변에서 언급했듯이 구형 Pi 모델의 PWR 제외).
그러나 이더넷 LED의 경우 드라이버를 패치하고 커널을 다시 컴파일해야합니다.
재 컴파일 방법에 대한 정보는 여기 ( 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 / class / smsc95xx_leds / eth_fdx
Raspberry Pi 2를 사용하면 PWD LED도 제어 할 수 있음을 확인할 수 있습니다!
전원 LED는 다음 파일에 의해 제어됩니다.
/sys/class/leds/led1
다음을 사용하여 상태 LED와 같이 끌 수 있습니다.
echo 0 > /sys/class/leds/led1/brightness # Power LED
echo 0 > /sys/class/leds/led0/brightness # Status LED
LED를 제어하는 더 많은 방법은 Guy 's answer를 참조하십시오.
이더넷 LED를 제어 할 수있는 사용자 공간 프로그램을 작성했습니다.
이 프로그램에는 더 최신 libusb-1.0
버전이 필요합니다 (이전 0.1은 아님). LAN9512 (예 : 이전 Raspberry B) 및 LAN9514 칩 (예 : Raspberry B + 또는 Raspberry 2)과 함께 작동
자세한 내용은 여기를 참조하십시오 : LAN951x LED 제어
Pi 2를 사용하면 빨강 및 녹색 온보드 LED를 모두 제어 할 수 있습니다.
Windows 10 IoT 설명서에는 GPIO 35 및 47의 빨간색 전원 LED와 녹색 Ok LED가 각각 나열되어 있습니다.
https://ms-iot.github.io/content/en-US/win10/samples/PinMappingsRPi2.htm
Windows 10 IoT와 Raspbian의 Python을 사용해 보았습니다. Raspbian은 SD 카드에 액세스 할 때마다 LED를 무시하지만 둘 다 LED를 제어 할 수 있습니다. 아마도 트리거를 지우면이 동작이 제거 될 것입니다.)
다음은 샘플입니다. (이는 이전 게시물에서 언급 한 것처럼 트리거를 무시하지 않습니다.)
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")