簡體   English   中英

帶有 Pi4j Java 的 Raspberry Pi4

[英]Raspberry Pi4 with Pi4j Java

我正在嘗試使用 pi4j java 庫 v1.2 在我的 Raspberry Pi4 上運行一個簡單的測試。 不知何故,它什么也沒做。 我也沒有在控制台上看到任何錯誤。 它只是在 2 秒后完成。 我期待 LED 燈在 2 秒后打開和關閉。

我還按照此https://stackoverflow.com/a/63433316/607637將我的 gpio 二進制文件更新為 v2.52,但它仍然相同。 此外,命令gpio write 19 1沒有做任何事情。

通用輸入輸出接口

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完全不兼容嗎?

它似乎在這里回答:

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

事實上,Pi4J 默認使用 WiringPi 編號方案。 這是一個很好的概述,其中物理引腳號 (1-40)、BMC 和 WiringPi (WPI) 彼此相鄰。

這在我的“ Raspberry Pi 上的 Java 入門”一書中有進一步的描述。 是的,我知道,這是無恥的自我推銷 ;-)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM