Kontrol Pi4 GPIO dengan Java
Saya pada dasarnya mencoba untuk menyalakan led dengan menggunakan pustaka pi4j. Kode saya cukup sederhana:
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();
}
Saya mengekspor file jar dari komputer saya, menyalin ke Raspberry Pi 4 saya daripada menjalankannya di sana.
Untuk memeriksa apakah led saya tidak rusak atau GPIO disetel, saya telah mengeksekusi skrip Python berikut dan saya melihat led saya berfungsi dengan sempurna:
python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,True)
Apa yang saya lewatkan?
Jawaban
Memang seperti yang disebutkan di komentar, Pi4J menggunakan skema penomoran pin yang berbeda. "Di bawah kap", WiringPi digunakan untuk mengontrol GPIO. Perpustakaan ini menggunakan skema penomoran yang berbeda. Ini berarti BCM pin 17 yang Anda gunakan dengan Python adalah pin 0 dalam skema WiringPi.
Lihat di bawah tabel lengkap dengan BCM, WiringPi, dan penomoran pin fisik (lihat link 2 di bawah).
Selain itu, kabel internal Raspberry Pi 4 berbeda dibandingkan dengan yang sebelumnya, jadi Anda harus memutakhirkan WiringPi Anda ke versi 2.52 terbaru dengan:
$ 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
Sebagai catatan tambahan: kami sedang mengerjakan versi baru Pi4J yang akan membuat segalanya lebih mudah, tetapi masih dalam proses ... ;-)
Info lebih lanjut di posting blog saya tentang:
- Menggunakan Pi4j (V1) pada Raspberry Pi 4
- Riwayat, versi, pin, dan header Raspberry Pi sebagai pustaka Java Maven
- Majalah Oracle Java: Memulai JavaFX di Raspberry Pi