树莓派 java(pi4j)操作GPIO

    xiaoxiao2021-04-14  67

    官方的一个简单示例

    // START SNIPPET: blink-gpio-snippet /*  * #%L  * **********************************************************************  * ORGANIZATION  :  Pi4J  * PROJECT       :  Pi4J :: Java Examples  * FILENAME      :  BlinkGpioExample.java  *  * This file is part of the Pi4J project. More information about  * this project can be found here:  http://www.pi4j.com/  * **********************************************************************  * %%  * Copyright (C) 2012 - 2016 Pi4J  * %%  * This program is free software: you can redistribute it and/or modify  * it under the terms of the GNU Lesser General Public License as  * published by the Free Software Foundation, either version 3 of the  * License, or (at your option) any later version.  *  * This program is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  * GNU General Lesser Public License for more details.  *  * You should have received a copy of the GNU General Lesser Public  * License along with this program.  If not, see  * <http://www.gnu.org/licenses/lgpl-3.0.html>.  * #L%  */ import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalInput; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.PinPullResistance; import com.pi4j.io.gpio.RaspiPin; import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent; import com.pi4j.io.gpio.event.GpioPinListenerDigital; /**  * This example code demonstrates how to perform simple  * blinking LED logic of a GPIO pin on the Raspberry Pi  * using the Pi4J library.  *  * @author Robert Savage  */ public class BlinkGpioExample {     public static void main(String[] args) throws InterruptedException {         System.out.println("<--Pi4J--> GPIO Blink Example ... started.");         // create gpio controller         final GpioController gpio = GpioFactory.getInstance();         // provision gpio pin #01 & #03 as an output pins and blink         final GpioPinDigitalOutput led1 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01);         final GpioPinDigitalOutput led2 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_03);         // provision gpio pin #02 as an input pin with its internal pull down resistor enabled         final GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, PinPullResistance.PULL_DOWN);         // create and register gpio pin listener         myButton.addListener(new GpioPinListenerDigital() {                 @Override                 public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {                     // when button is pressed, speed up the blink rate on LED #2                     if(event.getState().isHigh()){                       led2.blink(200);                     }                     else{                       led2.blink(1000);                     }                 }             });         // continuously blink the led every 1/2 second for 15 seconds         led1.blink(500, 15000);         // continuously blink the led every 1 second         led2.blink(1000);         System.out.println(" ... the LED will continue blinking until the program is terminated.");         System.out.println(" ... PRESS <CTRL-C> TO STOP THE PROGRAM.");         // keep program running until user aborts (CTRL-C)         while(true) {             Thread.sleep(500);         }         // stop all GPIO activity/threads         // (this method will forcefully shutdown all GPIO monitoring threads and scheduled tasks)         // gpio.shutdown();   <--- implement this method call if you wish to terminate the Pi4J GPIO controller     } } //END SNIPPET: blink-gpio-snippet

    操作输出

    package com.xyes.pi4j.test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.RaspiPin; public class EnvTest {     public static void main(String[] args) {         URL url = null;         byte[] buffer = null;         try {             url = new URL("http://www.baidu.com");             InputStream stream = url.openStream();             ByteArrayOutputStream out = new ByteArrayOutputStream();             copy(stream, out);             out.close();             stream.close();             buffer = out.toByteArray();         } catch (Exception e1) {             e1.printStackTrace();         }         final GpioController controller = GpioFactory.getInstance();         final GpioPinDigitalOutput LED = controller.provisionDigitalOutputPin(RaspiPin.GPIO_15);         for (byte b : buffer) {             if (b > 100) {                 LED.high();             } else {                 LED.low();             }             System.out.println("-->" + b);             try {                 Thread.sleep(100);             } catch (InterruptedException e) {                 e.printStackTrace();             }         }     }     public static void copy(InputStream in, OutputStream out) throws IOException {         byte[] buffer = new byte[1024];         int len = 0;         while ((len = in.read(buffer)) > 0) {             out.write(buffer, 0, len);         }     } } 操作输入

    import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalInput; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.RaspiPin; import com.pi4j.io.gpio.event.GpioPinListener; public class ButtonTest implements GpioPinListener {     private static final GpioController CONTROLLER = GpioFactory.getInstance();     private static final GpioPinDigitalInput BUTTON = CONTROLLER.provisionDigitalInputPin(RaspiPin.GPIO_16);     private static final GpioPinDigitalOutput LED = CONTROLLER.provisionDigitalOutputPin(RaspiPin.GPIO_15);     public static void main(String[] args) {         new ButtonTest().run();     }     public void run() {         while (true) {             if (BUTTON.isHigh()) {                 LED.high();             } else {                 LED.low();             }             try {                 Thread.sleep(100);             } catch (InterruptedException e) {                 e.printStackTrace();             }         }     } } 监听器方式读取输入

    import java.util.Scanner; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalInput; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.RaspiPin; import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent; import com.pi4j.io.gpio.event.GpioPinListenerDigital; public class GpioListener implements GpioPinListenerDigital {     private static final GpioController CONTROLLER = GpioFactory.getInstance();     private static final GpioPinDigitalInput BUTTON = CONTROLLER.provisionDigitalInputPin(RaspiPin.GPIO_16);     private static final GpioPinDigitalOutput LED = CONTROLLER.provisionDigitalOutputPin(RaspiPin.GPIO_15);     public static void main(String[] args) {         new GpioListener().run();     }     public void run() {         BUTTON.addListener(this);         Scanner scanner = new Scanner(System.in);         scanner.nextLine();     }     @Override     public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {         boolean state = event.getState().isHigh();         System.out.println("--->pin:" + event.getPin() + "|state:" + state);         if (state) {             LED.high();         } else {             LED.low();         }     } }

    转载请注明原文地址: https://ju.6miu.com/read-670663.html

    最新回复(0)