Pi4 GPIO Control z Javą
Zasadniczo próbuję włączyć diodę za pomocą biblioteki pi4j. Mój kod jest dość prosty:
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();
}
Eksportuję plik jar z mojego komputera, kopiując do mojego Raspberry Pi 4, a potem tam uruchamiam.
Aby sprawdzić, czy moja dioda LED nie jest zepsuta lub GPIO jest ustawione, wykonałem następujące skrypty Pythona i widzę, że moja dioda działa idealnie:
python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,True)
czego mi brakuje?
Odpowiedzi
Rzeczywiście, jak wspomniano w komentarzach, Pi4J używa innego schematu numeracji pinów. „Pod maską”, WiringPi służy do sterowania GPIO. Ta biblioteka używa innego schematu numeracji. Oznacza to, że pin 17 BCM, którego używasz w Pythonie, jest pinem 0 w schemacie WiringPi.
Zobacz poniżej pełną tabelę z BCM, WiringPi i fizyczną numeracją styków (patrz łącze 2 poniżej).
Poza tym wewnętrzne okablowanie Raspberry Pi 4 różni się od poprzednich, więc musisz zaktualizować WiringPi do najnowszej wersji 2.52 za pomocą:
$ 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
Na marginesie: pracujemy nad nową wersją Pi4J, która ułatwi sprawę, ale praca w toku ... ;-)
Więcej informacji w moich postach na blogu:
- Korzystanie z Pi4j (V1) na Raspberry Pi 4
- Historia, wersje, piny i nagłówki Raspberry Pi jako biblioteka Java Maven
- Magazyn Oracle Java: Pierwsze kroki z JavaFX na Raspberry Pi