maven 引用pi4j
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-core</artifactId>
<version>1.2</version>
</dependency>
输出
final GpioController gpio = GpioFactory.getInstance();
final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01);
pin.setShutdownOptions(true, PinState.LOW, PinPullResistance.OFF); // 程序关闭时设置端口的状态
pin.setMode(PinMode.DIGITAL_OUTPUT);
pin.setState(PinState.HIGH); //设置为高电平。
GPIO_01设置为输出,并设置为高电平。
final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, PinState.HIGH);
简便方法:
pin.low();
pin.high();
pin.toggle();//切换状态
pin.pulse(1000); //脉冲法将pin设置为高 时间1秒
pin.pulse(1000,true); //打开端口1秒,然后关闭
读取状态
PinState state = pin.getState();
boolean ishigh=pin.isHigh();
监听引脚变化
final GpioPinDigitalInput pin = gpio.provisionDigitalInputPin(RaspiPin.GPIO_01);
pin.addListener(new GpioPinListenerDigital(){
@Override
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event){
PinState state = event.getState();
int value = state.getValue();
if(value==1){
logger.info("prepare connect to mobile"); //生成二维码
try {
device.startBind();
} catch (IOException e) {
e.printStackTrace();
} catch (WriterException e) {
e.printStackTrace();
}
}
}
});
设置一个同步触发器
button.addTrigger(new GpioSyncStateTrigger(led));
关闭gpio控制器
gpio.shutdown();