微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有Pi4j Java的Raspberry Pi4

如何解决带有Pi4j Java的Raspberry Pi4

我正在尝试使用pi4j Java库v1.2在我的RaspBerry Pi4上运行一个简单的测试。不知何故它什么也没做。我也没有在控制台上看到任何错误。它仅在2秒后完成。 我希望LED灯能在2秒钟后打开和关闭

我也根据此https://stackoverflow.com/a/63433316/607637将gpio二进制文件更新为v2.52,但仍然相同。另外,命令gpio write 19 1没有执行任何操作。

GPIO

pi@gtpi:~ $ gpio -v
gpio version: 2.52
copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

RaspBerry Pi Details:
  Type: Pi 4B,Revision: 02,Memory: 4096MB,Maker: Sony 
  * Device tree is enabled.
  *--> RaspBerry Pi 4 Model B Rev 1.2
  * This RaspBerry Pi supports user-level GPIO access.
pi@gtpi:~ $ gpio write 19 1  ///---> this also doesn't do anything


Java应用程序:使用com.pi4j:pi4j-core:1.2

import com.pi4j.io.gpio.*;
public class Pi4 {
  public static void main(String[] a) throws Exception {
    GpioPinDigitalOutput op = GpioFactory.getInstance().provisionDigitalOutputPin(RaspiPin.GPIO_19);

    op.high();
    Thread.sleep(2000);
    op.low();
 }
}

但是,我编写的执行相同操作的python脚本正在运行:

from gpiozero import LED
from time import sleep

red = LED(19)
red.on()
sleep(2)
red.off()

问题:要使Java应用程序正常工作(打开LED指示灯),我还需要做些什么?它与Pi4完全不兼容吗?

解决方法

Indeed Pi4J默认使用WiringPi编号方案。 这是一个很好的概述,其中物理引脚号(1-40),BMC和WiringPi(WPI)彼此相邻。

这在我的书“ Getting Started with Java on the Raspberry Pi”中有进一步描述。是的,我知道,这是无耻的自我促销;-)

enter image description here

,

似乎在这里回答了:

看起来Pi4j使用了不同的引脚编号方案。 “引擎盖下”使用WiringPi来控制GPIO。

所以,我需要告诉它使用使用Broadcom引脚编号方案的方式:

GpioFactory.setDefaultProvider(new RaspiGpioProvider(RaspiPinNumberingScheme.BROADCOM_PIN_NUMBERING));

现在可以正常工作了

import com.pi4j.io.gpio.*;
public class Pi4 {
  public static void main(String[] a) throws Exception {
    GpioFactory.setDefaultProvider(new RaspiGpioProvider(RaspiPinNumberingScheme.BROADCOM_PIN_NUMBERING));

    GpioPinDigitalOutput op = GpioFactory.getInstance().provisionDigitalOutputPin(RaspiPin.GPIO_19);

    op.high();
    Thread.sleep(2000);
    op.low();
 }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。