Contrôle Pi4 GPIO avec Java
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
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: