Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import com.pi4j.io.gpio.GpioController;
  2. import com.pi4j.io.gpio.GpioFactory;
  3. import com.pi4j.io.gpio.GpioPinDigitalInput;
  4. import com.pi4j.io.gpio.PinPullResistance;
  5. import com.pi4j.io.gpio.RaspiPin;
  6. import com.pi4j.io.gpio.event.GpioPinListener;
  7. import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
  8. import com.pi4j.io.gpio.event.GpioPinListenerDigital;
  9.  
  10. /**
  11.  * This example code demonstrates how to setup a listener
  12.  * for GPIO pin state changes on the Raspberry Pi.  
  13.  *
  14.  * @author Robert Savage
  15.  */
  16. public class ListenGpioExample
  17. {
  18.     public static void main(String args[]) throws InterruptedException
  19.     {
  20.         System.out.println("<--Pi4J--> GPIO Listen Example ... started.");
  21.        
  22.         // create gpio controller
  23.         GpioController gpio = GpioFactory.getInstance();
  24.  
  25.         // provision gpio pin #02 as an input pin with its internal pull down resistor enabled
  26.         GpioPinDigitalInput myButton0 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_16, "MyButton-0", PinPullResistance.PULL_UP);
  27.         GpioPinDigitalInput myButton1 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_00, "MyButton-1", PinPullResistance.PULL_UP);
  28.         GpioPinDigitalInput myButton2 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_01, "MyButton-2", PinPullResistance.PULL_UP);
  29.         GpioPinDigitalInput myButton3 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, "MyButton-3", PinPullResistance.PULL_UP);
  30.         GpioPinDigitalInput myButton4 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_03, "MyButton-4", PinPullResistance.PULL_UP);
  31.         GpioPinDigitalInput myButton5 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_04, "MyButton-5", PinPullResistance.PULL_UP);
  32.         GpioPinDigitalInput myButton6 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_05, "MyButton-6", PinPullResistance.PULL_UP);
  33.         GpioPinDigitalInput myButton7 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_06, "MyButton-7", PinPullResistance.PULL_UP);
  34.  
  35.         // create and register gpio pin listener
  36.         myButton0.addListener(new GpioExampleListener());
  37.         myButton1.addListener(new GpioExampleListener());
  38.         myButton2.addListener(new GpioExampleListener());
  39.         myButton3.addListener(new GpioExampleListener());
  40.         myButton4.addListener(new GpioExampleListener());
  41.         myButton5.addListener(new GpioExampleListener());
  42.         myButton6.addListener(new GpioExampleListener());
  43.         myButton7.addListener(new GpioExampleListener());
  44.        
  45.         System.out.println(" ... complete the GPIO #02 circuit and see the listener feedback here in the console.");
  46.        
  47.         // keep program running until user aborts (CTRL-C)
  48.         for (;;)
  49.         {
  50.             Thread.sleep(500);
  51.         }
  52.     }
  53. }
  54.  
  55. /**
  56.  * This class implements the GPIO listener interface
  57.  * with the callback method for event notifications
  58.  * when GPIO pin states change.
  59.  *
  60.  * @see GpioPinListener
  61.  * @author Robert Savage
  62.  */
  63. class GpioExampleListener implements GpioPinListenerDigital
  64. {
  65.     @Override
  66.     public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event)
  67.     {
  68.         // display pin state on console
  69.         System.out.println(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = "
  70.                 + event.getState());
  71.     }
  72. }