Contrôle Pi4 GPIO avec Java

Oct 12 2020

J'essaye essentiellement d'allumer une led en utilisant la bibliothèque pi4j. Mon code est assez simple:

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

J'exporte le fichier jar de mon ordinateur, en copiant sur mon Raspberry Pi 4 avant de l'exécuter.

Pour vérifier si ma led n'est pas cassée ou si GPIO est défini, j'ai exécuté les scripts Python suivants et je vois que ma led fonctionne parfaitement:

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

Qu'est-ce que je rate?

Réponses

1 Frank Oct 12 2020 at 13:51

En effet, comme mentionné dans les commentaires, Pi4J utilise un schéma de numérotation des broches différent. «Sous le capot», WiringPi est utilisé pour contrôler les GPIO. Cette bibliothèque utilise un schéma de numérotation différent. Cela signifie que la broche 17 du BCM que vous utilisez en Python est la broche 0 dans le schéma WiringPi.

Voir ci-dessous un tableau complet avec BCM, WiringPi et la numérotation physique des broches (voir lien 2 ci-dessous).

En plus de cela, le câblage interne du Raspberry Pi 4 est différent des précédents, vous devrez donc mettre à niveau votre WiringPi vers la dernière version 2.52 avec:

$ 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

En remarque: nous travaillons sur une nouvelle version de Pi4J qui facilitera les choses, mais en cours de travail ... ;-)

Plus d'informations dans mes articles de blog sur:

  1. Utilisation de Pi4j (V1) sur le Raspberry Pi 4
  2. Historique, versions, broches et en-têtes de Raspberry Pi en tant que bibliothèque Java Maven
  3. Oracle Java Magazine: Premiers pas avec JavaFX sur Raspberry Pi