覆盆子Pi4与Pi4j Java
我正在尝试使用pi4j java库v1在我的Raspberry Pi4上运行一个简单的测试。2.不知怎的,它什么也没做。我在控制台上也没有看到任何错误。2秒后就结束了。 我希望LED灯在2秒钟后打开和关闭
我还将我的gpio二进制文件更新为v2。52根据这个{a1}但还是一样。另外,命令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完全不兼容吗
# 1 楼答案
似乎它的答案如下:
看起来Pi4j使用了不同的管脚编号方案。“发动机罩下”,WiringPi用于控制GPIO
因此,我需要告诉它使用Broadcom pin编号方案,使用:
GpioFactory.setDefaultProvider(new RaspiGpioProvider(RaspiPinNumberingScheme.BROADCOM_PIN_NUMBERING));
现在工作:
# 2 楼答案
实际上,Pi4J默认使用WiringPi编号方案。 这是一个很好的概述,其中物理引脚号(1-40)、BMC和WiringPi(WPI)彼此相邻
这在我的书Getting Started with Java on the Raspberry Pi中有进一步的描述。是的,我知道,这是无耻的自我推销;-)