Raspberry PI、Java 和 Pi4J 控制 GPIO 无法获取当前 PinState
Raspberry PI, Java and Pi4J Controlling GPIO cant get current PinState
我目前正在开发一个小程序,它应该检查 explicit 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。
感谢您的帮助:)
尝试使用 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
我目前正在开发一个小程序,它应该检查 explicit 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。
感谢您的帮助:)
尝试使用 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