0
点赞
收藏
分享

微信扫一扫

树莓派学习 27.Pi4J操作GPIO口

两岁时就很帅 2022-06-28 阅读 70

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();


举报

相关推荐

0 条评论