【问题标题】:Raspberry PI, Java and Pi4J Controlling GPIO cant get current PinStateRaspberry PI、Java 和 Pi4J 控制 GPIO 无法获取当前 PinState
【发布时间】:2015-11-16 23:38:43
【问题描述】:

我目前正在开发一个小程序,它应该检查显式 GPIO 引脚的当前状态,而不是切换。为此,我正在使用 java 和 PI4J。当我的程序启动时,LED 关闭。但是一旦我把它作为一个变量,它就会自动将状态设置为 HIGH。有谁知道如何避免这种情况?到目前为止我的代码:

final GpioController gpio = GpioFactory.getInstance();
GpioPinDigitalOutput led =gpio.provisionDigitalMultipurposePin(RaspiPin.GPIO_07,PinMode.DIGITAL_OUTPUT);


            PinState ledStatus = led.getState();
            if (ledStatus.isHigh())
            {
                led.setShutdownOptions(true, PinState.LOW);
                System.out.println("Set shutdownOption LOW");
            }
            else
            {
                led.setShutdownOptions(true, PinState.HIGH);
                System.out.println("Set shutdownOption HIGH");
            } 

         if(ledStatus.isHigh())
        {
            System.out.println("LEDS aus...");
        }
        else 
        {
            System.out.println("LEDS an...");
        }
        led.toggle();

这工作得很好。但正如我所说,在我开始程序之前...... LED 熄灭了!我一到这条线: GpioPinDigitalOutput led =gpio.provisionDigitalMultipurposePin(RaspiPin.GPIO_07,PinMode.DIGITAL_OUTPUT); LED 亮起!我需要想办法在应用程序运行之前获取状态,更改它,然后在 LED 切换的情况下退出我的程序。

感谢您的帮助:)

【问题讨论】:

    标签: java gpio


    【解决方案1】:

    尝试使用 provisionDigitalMultipurposePin 方法设置第一个模式 INPUT 以读取状态,然后切换到 OUTPUT 模式以更改引脚状态。

    GpioController gpio = GpioFactory.getInstance();
    GpioPinDigitalMultipurpose led = gpio.provisionDigitalMultipurposePin(RaspiPin.GPIO_07, PinMode.DIGITAL_INPUT);
    
    // read state
    
    led.setMode(PinMode.DIGITAL_OUTPUT);
    
    // write state
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多