Pi4 GPIO Control mit Java
Ich versuche im Grunde, eine LED mit der pi4j-Bibliothek einzuschalten. Mein Code ist ziemlich einfach:
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();
}
Ich exportiere die JAR-Datei von meinem Computer und kopiere sie auf meinen Raspberry Pi 4, anstatt sie dort auszuführen.
Um zu überprüfen, ob meine LED nicht defekt oder GPIO eingestellt ist, habe ich die folgenden Python-Skripte ausgeführt und sehe, dass meine LED einwandfrei funktioniert:
python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,True)
Was vermisse ich?
Antworten
Wie in den Kommentaren erwähnt, verwendet Pi4J ein anderes Pin-Nummerierungsschema. "Unter der Haube" wird WiringPi zur Steuerung der GPIOs verwendet. Diese Bibliothek verwendet ein anderes Nummerierungsschema. Dies bedeutet, dass BCM-Pin 17, den Sie in Python verwenden, Pin 0 im WiringPi-Schema ist.
Unten finden Sie eine vollständige Tabelle mit BCM, WiringPi und physikalischer Pin-Nummerierung (siehe Link 2 unten).
Darüber hinaus unterscheidet sich die interne Verkabelung des Raspberry Pi 4 von der vorherigen. Daher müssen Sie Ihr WiringPi auf die neueste Version 2.52 aktualisieren mit:
$ 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
Als Randnotiz: Wir arbeiten an einer neuen Version von Pi4J, die die Dinge einfacher machen wird, aber in Arbeit ist ... ;-)
Weitere Infos in meinen Blogposts zu: