मैं अपने सॉफ़्टवेयर का उपयोग करके सिस्टम एल ई डी को कैसे नियंत्रित कर सकता हूं?


64

आरपीआई पर 5 एलईडी हैं: ओके, पीडब्लूआर, एफडीएक्स, एलएनके, 10 एम।

मैं यह जानना चाहता हूं कि क्या इनमें से किसी को भी सॉफ्टवेयर से नियंत्रित करना संभव है यानी इन्हें चालू करें, या तीव्रता को बदल दें (या रंग गैस को भी बदल दें )।

और यदि हां, तो मैं इसके बारे में कहां पढ़ सकता हूं? जब वे मूल उपयोग के लिए आवश्यक नहीं होते हैं, तो एल ई डी उपयोगकर्ता आवेदन की स्थिति को इंगित करने का काफी आसान तरीका हो सकता है।


2
और हाँ - मुझे पता है कि मैं GPIO आउटपुट पर आसानी से एल ई डी जोड़ सकता हूं - लेकिन मैं उत्सुक हूं कि बाहरी हार्डवेयर के बिना क्या किया जा सकता है।
मारिया ज्वेरेना

1
एल ई डी आम तौर पर एकल रंग होते हैं (विशेषकर जब एक उद्देश्य के लिए आवश्यक होते हैं), तो आप उस हिस्से के बारे में भूल सकते हैं :)
Jivings

2
@ राजीव सहमत हैं कि शायद उन्होंने आरपीआई की लागत को देखते हुए एकल रंग दिया है ... लेकिन यह पूछने के लिए कभी दर्द नहीं होता है :)
मारिया ज्वेरेना

जवाबों:


57

ओके एलईडी को यूजर स्पेस सॉफ्टवेयर से नियंत्रित किया जा सकता है। यहाँ विवरण: पुन: हम पर बोर्ड के नेतृत्व में नियंत्रण कर सकते हैं

ऊपर से सारांशित (ब्रायनडब्ल्यू के लिए सभी क्रेडिट):

ओके एलईडी के रूप में उपलब्ध है /sys/class/leds/led0/

कर्नेल एलईडी ड्राइवर में "ट्रिगर" होता है जो कर्नेल के कुछ अन्य भाग को एलईडी को नियंत्रित करने देता है। एलईडी के लिए डिफ़ॉल्ट ट्रिगर ' mmc0' है, जो एसडी कार्ड एक्सेस किए जाने पर आता है।

root@raspberrypi:~# cat /sys/class/leds/led0/trigger
none [mmc0]

आप mmc0ट्रिगर को इस प्रकार से निष्क्रिय कर सकते हैं:

echo none >/sys/class/leds/led0/trigger

' brightness' फ़ाइल का उपयोग करके एलईडी को चालू और बंद किया जा सकता है । न्यूनतम चमक 0 है, और अधिकतम 255 है। जैसा कि कोई चर चमक समर्थन नहीं है, 0 से अधिक कोई भी मूल्य एलईडी को चालू करेगा।

echo 1 >/sys/class/leds/led0/brightness
echo 0 >/sys/class/leds/led0/brightness

चमक को 0 पर सेट करना स्वचालित रूप से "कोई नहीं" के लिए ट्रिगर सेट करता है।

यदि आप चाहते हैं कि एलईडी अपने डिफ़ॉल्ट फ़ंक्शन पर वापस जाए:

echo mmc0 >/sys/class/leds/led0/trigger

कुछ कर्नेल मॉड्यूल हैं जिन्हें आप लोड कर सकते हैं ( ledtrig_timerऔर ledtrig_heartbeat) जो आपके लिए एलईडी फ्लैश करेंगे।

modprobe ledtrig_heartbeat
echo heartbeat >/sys/class/leds/led0/trigger

एक बार जब आप mmc0ट्रिगर बंद कर देते हैं, तो आप एलईडी को नियंत्रित करने के लिए GPIO16 का उपयोग कर सकते हैं। यह सक्रिय-कम है, इसलिए आपको एलईडी चालू करने के लिए पिन को कम सेट करने की आवश्यकता है, और इसे बंद करने के लिए उच्च है।

पायथन से, आप RPi.GPIO16 पिन को नियंत्रित करने के लिए मॉड्यूल का उपयोग कर सकते हैं। एक सी # ड्राइवर भी है।

नमूना कोड

#!/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)

3
सुनो मित्र! लिंक रोट को रोकने के लिए क्या आप यहां धागे के मुख्य बिंदुओं को संक्षेप में बता सकते हैं? धन्यवाद!

वह भी हैक नहीं है!
एलेक्स चैम्बरलेन

ये सही है। यकीन है कि ईथरनेट और pwr का नेतृत्व नहीं कर सकते हैं, लेकिन अगर आप की जरूरत है और वे अभी जोड़ा जा सकता है (हार्डवेयर के रूप में) उजागर GPIO पिन करने के लिए। GPIO पिन में LED को जोड़ने के कई उदाहरण हैं। ऐसा लगता है कि इन दिनों इलेक्ट्रॉनिक्स 101 के रूप में क्रिस्टल सेट को बदल दिया गया है :) मेरे पास हर बार एक ओएमई सजा प्राप्त होने पर एलईडी फ्लैश चमकती है।
लड़के

4
रास्पबेरी पाई 2 पर FYI करें, आप अंततः PWR LED को भी नियंत्रित कर सकते हैं! इसे GPIO मोड के साथ echo gpio | sudo tee /sys/class/leds/led1/trigger, फिर चालू या बंद करें echo [0|1] | sudo tee /sys/class/leds/led1/brightness
जेरलिंगगुगी

2
कमांड लाइन से ऐसा करने के बारे में सोच रहे किसी के लिए (सुपर उपयोगकर्ता विशेषाधिकार / / sys / वर्ग को लिखने के लिए आवश्यक ...), पहले gpio पर ट्रिगर करने के लिए एलईडी सेट करें, और फिर WiringPi learn.sparkfun.com/tutorials/ स्थापित करें raspberry-gpio / c-wiringpi-setup उसके बाद आप सिर्फ "$ gpio -g मोड 16 आउटपुट और& gpio -g राइट 16 ऑन" चालू करने के लिए (और बंद के लिए 1)
joonas .fi

20

किसी भी ऑन बोर्ड एलइडी को सॉफ्टवेयर में नियंत्रित नहीं किया जा सकता है - इनका उपयोग अन्य चीजों के लिए किया जाता है।

  • ठीक है - एसडी कार्ड एक्सेस को इंगित करता है
  • पीडब्लूआर - माइक्रो यूएसबी कनेक्शन को पावर इंगित करता है
  • FDX - फुल डुप्लेक्स लैन
  • LNK - LAN गतिविधि
  • 10M - 10M / 100M कनेक्शन की गति - यदि इसे जलाया जाता है, तो RPM 100M पर जुड़ा होता है।

अब, यह आधिकारिक उत्तर है ... आइए योजनाबद्ध अध्ययन करें ।

पेज 4 पीडब्ल्यूआर एलईडी सीधे बिजली की आपूर्ति से जुड़ा है, इसलिए हम सॉफ्टवेयर में इसे नियंत्रित नहीं कर सकते हैं।

पेज 3 एफडीएक्स, एलएनके और 10 एम सभी ईथरनेट चिप से जुड़े हैं, इसलिए फिर से हम उन्हें सॉफ्टवेयर में नियंत्रित नहीं कर सकते हैं (कुछ फंकी ट्रैफिक हैक के बिना ...)।

पृष्ठ 4 बटन ठीक है वास्तव में GPIO 16 द्वारा नियंत्रित किया जाता है, इसलिए एक हैक की संभावना है ...


1
@AlexChamberlain एलईडी की अच्छी परिभाषा। लेकिन क्या हमें वाकई यकीन है कि उन्हें सॉफ्टवेयर द्वारा नियंत्रित नहीं किया जा सकता है? फर्मवेयर नियंत्रण या वास्तविक हार्डवेयर के तहत नेटवर्क एल ई डी हैं? और अगर वे फर्मवेयर नियंत्रित हैं, तो क्या हम किसी तरह इंजीनियर को उल्टा कर सकते हैं?
मारिया ज्वेरेना

5
योजनाबद्ध की जाँच करें - PWR सीधे बिजली से जुड़ा है, और FDX, LNK & 10M से ईथरनेट चिप। जैसा कि मैंने कहा, आप ओके एलईडी को हैक करने में सक्षम हो सकते हैं।
एलेक्स चेम्बरलेन

एलेक्स सही है। उन एलईडी पर बीसीएम चिप का कोई नियंत्रण नहीं है (GPIO16 के लिए) इसलिए कोई भी सॉफ्टवेयर उन्हें एक्सेस नहीं कर सकता है, निम्न स्तर के कर्नेल कोड को भी नहीं। आपको LAN चिप को हैक करना होगा या इन LED- BUt को अपना शॉर्ट कट सर्किट बनाना होगा जो वास्तव में एक बेहतरीन विचार नहीं है। सिर्फ अपना ही क्यों न जोड़ें?
पिओटर कुल

3
मुझे ऐसा लगता है कि यह अन्य उत्तर इस उत्तर के कम से कम भाग (और कुछ टिप्पणियों) को गलत दर्शाता है। क्या मैं चीजों को सही ढंग से पढ़ रहा हूं? यह सही हो सकता है कि केवल ओके (मेरे रेव बी बोर्ड पर "एसीटी" लेबल किया जा सकता है) को नियंत्रित किया जा सकता है, लेकिन ऐसा लगता है कि एक हो सकता है। (मैं वास्तव में यह अभी तक है, हालांकि ऐसा करने के लिए प्रयास नहीं किया है।)
lindes

7

यूजरलैंड से LAN एल ई डी को नियंत्रित करने का एक सरल तरीका है। स्रोत कोड से उपलब्ध है

http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=72070

कार्यक्रम को सूडो के साथ चलाने की आवश्यकता है।


7

आप सभी लीड को नियंत्रित कर सकते हैं (पुराने पाई मॉडल में PWR को छोड़कर, जैसा कि अन्य उत्तरों में कहा गया है)।

लेकिन ईथरनेट लीड्स के लिए आपको ड्राइवर को पैच करना होगा और कर्नेल को फिर से जोड़ना होगा।

कैसे recompile की जानकारी यहाँ प्राप्त कर सकते हैं: http://elinux.org/RPi_Kernel_Compilation

पैच और अधिक जानकारी यहाँ (google Translate if need): 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।

उदाहरण: इको ०> / sys / class / smsc95xx_leds / eth_fdx इको १> / sys / वर्ग / smsc95xx_leds / eth_fdx


6

मैं पुष्टि कर सकता हूं कि रास्पबेरी पाई 2 के साथ ही पीडब्ल्यूडी एलईडी को भी नियंत्रित करना संभव है!

पावर एलईडी को फाइलों द्वारा नियंत्रित किया जाता है:

/sys/class/leds/led1

आप इसे वैसे ही बंद कर सकते हैं जैसे स्टेटस एलईडी का उपयोग करके:

echo 0 > /sys/class/leds/led1/brightness # Power LED
echo 0 > /sys/class/leds/led0/brightness # Status LED

एल ई डी को नियंत्रित करने के अधिक तरीकों के लिए गाइ का जवाब देखें


रास्पबेरी पी पर शून्य "गूंज 0 ..." इसे चालू करता है! बंद नहीं।
NilsB

6

मैंने एक यूजरस्पेस प्रोग्राम लिखा है जो आपको ईथरनेट एल ई डी को नियंत्रित करने देता है।

कार्यक्रम को और अधिक हाल की आवश्यकता है libusb-1.0(पुराने 0.1 नहीं)। यह LAN9512 के साथ काम करता है (जैसे पुराने रास्पबेरी बी पर) और साथ ही LAN9514 चिप्स (जैसे रास्पबेरी बी + या रास्पबेरी 2 पर)

विवरण यहाँ पाया जा सकता है: LAN951x एलईडी नियंत्रण


चूंकि आपके लिंक की सामग्री काफी छोटी है, इसलिए इसे अपने उत्तर में, ब्लॉकक्वाट्स में शामिल करना बेहतर होगा, क्योंकि लिंक भविष्य में मर सकता है। अगर ऐसा होता है तो आपके जवाब का ज्यादा इस्तेमाल नहीं होगा। इसके अलावा, यहाँ github लिंक भी प्रदान करें।
ग्रीनऑनलाइन

5

Pi 2 के साथ, आप लाल और हरे रंग के दोनों जहाज पर LED को नियंत्रित कर सकते हैं।

विंडोज 10 IoT डॉक्यूमेंट क्रमशः GPIO 35 और 47 पर लाल पावर एलईडी और हरे रंग की ओके एलईडी को सूचीबद्ध करता है।

https://ms-iot.github.io/content/en-US/win10/samples/PinMappingsRPi2.htm

मैंने विंडोज़ 10 IoT के साथ और रास्पियन पर पायथन के साथ प्रयास किया। दोनों एलईडी का नियंत्रण कर सकते हैं, हालांकि जब भी कुछ एसडी कार्ड एक्सेस करता है, तो रास्पियन एलईडी को ओवरराइड करता है। संभवतः, ट्रिगर साफ़ करने से यह व्यवहार समाप्त हो जाएगा।]

यहाँ एक नमूना है। (ध्यान दें कि यह ट्रिगर को ओवरराइड नहीं करता है जैसा कि पहले के पोस्ट में बताया गया है)

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")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.