Java ile Pi4 GPIO Kontrolü

Oct 12 2020

Temel olarak pi4j kitaplığını kullanarak bir led'i açmaya çalışıyorum. Kodum oldukça basit:

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();
}

Jar dosyasını bilgisayarımdan dışa aktarıyorum, orada çalıştırmak yerine Raspberry Pi 4'üme kopyalıyorum.

Ledimin bozuk olup olmadığını veya GPIO'nun ayarlanıp ayarlanmadığını kontrol etmek için Python komut dosyalarını takip ettim ve ledimin mükemmel çalıştığını görüyorum:

python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,True)

Neyi kaçırıyorum?

Yanıtlar

1 Frank Oct 12 2020 at 13:51

Nitekim yorumlarda belirtildiği gibi, Pi4J farklı bir pin numaralandırma şeması kullanıyor. "Kaputun altında", WiringPi, GPIO'ları kontrol etmek için kullanılır. Bu kitaplık farklı bir numaralandırma şeması kullanır. Bu, Python'da kullandığınız BCM pin 17'nin WiringPi şemasında pin 0 olduğu anlamına gelir.

BCM, WiringPi ve fiziksel pin numaralandırması ile tam bir tabloya bakın (aşağıdaki bağlantı 2'ye bakın).

Bunun yanında, Raspberry Pi 4'ün dahili kablolaması öncekilere kıyasla farklıdır, bu nedenle WiringPi'nizi en son sürüm 2.52'ye yükseltmeniz gerekir:

$ 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

Bir yan not olarak: Pi4J'nin işleri kolaylaştıracak, ancak devam etmekte olan yeni bir sürümü üzerinde çalışıyoruz ... ;-)

Blog yazılarımda daha fazla bilgi:

  1. Raspberry Pi 4'te Pi4j (V1) kullanma
  2. Raspberry Pi geçmişi, sürümleri, pimleri ve bir Java Maven kitaplığı olarak başlıklar
  3. Oracle Java Magazine: Raspberry Pi'de JavaFX'e başlarken