import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.event.GpioPinListener;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;
/**
* This example code demonstrates how to setup a listener
* for GPIO pin state changes on the Raspberry Pi.
*
* @author Robert Savage
*/
public class ListenGpioExample
{
public static void main(String args[]) throws InterruptedException
{
System.out.println("<--Pi4J--> GPIO Listen Example ... started.");
// create gpio controller
GpioController gpio = GpioFactory.getInstance();
// provision gpio pin #02 as an input pin with its internal pull down resistor enabled
GpioPinDigitalInput myButton0 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_16, "MyButton-0", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton1 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_00, "MyButton-1", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton2 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_01, "MyButton-2", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton3 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, "MyButton-3", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton4 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_03, "MyButton-4", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton5 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_04, "MyButton-5", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton6 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_05, "MyButton-6", PinPullResistance.PULL_UP);
GpioPinDigitalInput myButton7 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_06, "MyButton-7", PinPullResistance.PULL_UP);
// create and register gpio pin listener
myButton0.addListener(new GpioExampleListener());
myButton1.addListener(new GpioExampleListener());
myButton2.addListener(new GpioExampleListener());
myButton3.addListener(new GpioExampleListener());
myButton4.addListener(new GpioExampleListener());
myButton5.addListener(new GpioExampleListener());
myButton6.addListener(new GpioExampleListener());
myButton7.addListener(new GpioExampleListener());
System.out.println(" ... complete the GPIO #02 circuit and see the listener feedback here in the console.");
// keep program running until user aborts (CTRL-C)
for (;;)
{
Thread.sleep(500);
}
}
}
/**
* This class implements the GPIO listener interface
* with the callback method for event notifications
* when GPIO pin states change.
*
* @see GpioPinListener
* @author Robert Savage
*/
class GpioExampleListener implements GpioPinListenerDigital
{
@Override
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event)
{
// display pin state on console
System.out.println(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = "
+ event.getState());
}
}