Pi4 GPIO नियंत्रण जावा के साथ
मैं मूल रूप से pi4j लाइब्रेरी का उपयोग करके एक लीड को चालू करने की कोशिश कर रहा हूं। मेरा कोड बहुत सरल है:
public static void main(String args[]) throws InterruptedException {
GpioController gpioController = GpioFactory.getInstance();
GpioPinDigitalOutput pinOut = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_17);
pinOut.high();
Thread.sleep(5000);
pinOut.low();
}
मैं अपने कंप्यूटर से जार फ़ाइल निर्यात कर रहा हूं, मेरे रास्पबेरी पाई 4 की नकल कर रहा हूं।
यह जांचने के लिए कि क्या मेरा नेतृत्व टूटा नहीं है या GPIO सेट नहीं है, मैंने पायथन लिपियों का पालन किया है और मैं अपने एलईडी कार्यों को पूरी तरह से देखता हूं:
python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,True)
मैं क्या खो रहा हूँ?
जवाब
जैसा कि टिप्पणियों में बताया गया है, Pi4J एक अलग पिन नंबरिंग योजना का उपयोग कर रहा है। "हुड के तहत", WiringPi का उपयोग GPIO को नियंत्रित करने के लिए किया जाता है। यह लाइब्रेरी एक अलग नंबरिंग योजना का उपयोग करती है। इसका मतलब है कि BCM पिन 17 आप Python में उपयोग कर रहे हैं, WiringPi स्कीम में पिन 0 है।
BCM, WiringPi और भौतिक पिन नंबरिंग के साथ एक पूर्ण तालिका नीचे देखें (नीचे लिंक 2 देखें)।
उसके आगे, रास्पबेरी पाई 4 की आंतरिक वायरिंग पिछले वाले की तुलना में अलग है, इसलिए आपको अपने वायरिंगपीआई को नवीनतम संस्करण 2.52 के साथ अपग्रेड करने की आवश्यकता होगी:
$ gpio -v gpio version: 2.50 $ cd /tmp
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb $ sudo dpkg -i wiringpi-latest.deb
$ gpio -v
gpio version: 2.52
एक साइड नोट के रूप में: हम Pi4J के एक नए संस्करण पर काम कर रहे हैं जो चीजों को आसान बना देगा, लेकिन काम-में-प्रगति ...;;
मेरे ब्लॉग पोस्ट में अधिक जानकारी:
- रास्पबेरी पाई 4 पर Pi4j (V1) का उपयोग करना
- रास्पबेरी पाई इतिहास, संस्करण, पिन और हेडर एक जावा मावेन पुस्तकालय के रूप में
- ओरेकल जावा मैगज़ीन: रास्पबेरी पाई पर JavaFX के साथ शुरू हो रहा है