I am new to using Raspberry Pis GPIO and I am using pi4j to control it. I simply tried to make a Button work, that only triggers when releasing the button.

Here is my code

        if (Gpio.wiringPiSetup() == -1) {
            System.out.println(" ==>> GPIO SETUP FAILED");
        gpio = GpioFactory.getInstance();
        final GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_00, PinPullResistance.PULL_UP);

        GpioUtil.setEdgeDetection(RaspiPin.GPIO_00.getAddress(), GpioUtil.EDGE_FALLING);
        myButton.addListener(new GpioPinListenerDigital() {
            public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
                System.out.println("GPIO 0" + event.getEdge());
                // do something


I also tried using Gpio.wiringPiISR, Code here:

        Gpio.pinMode(2,  Gpio.INPUT);
        Gpio.pullUpDnControl(2, Gpio.PUD_UP);
        Gpio.wiringPiISR(2, Gpio.INT_EDGE_FALLING, new GpioInterruptCallback() {
            public void callback(int pin) {
                System.out.println("2nd callback called" + pin);
                // do something

Problem with first Code: It should only print "GPIO 0falling" but also prints "GPIO 0rising" Problem with 2nd Code: I am not even sure if edge detection works, because I could not find any method to debounce the pins input.

I am very close to examples from pi4j libary, but I must be doing something wrong. Can anyone help me out with this?

Note: I am using a Raspberry Pi 3 Model B (dont know if it could matter).

  • You say close to an example. Why not just use an example which checks for a falling edge? – joan Dec 26 '18 at 16:42
  • I simply changed the System.out.println statements but can not find the example anymore. I think I will check every edge by using if(event.getEdge()==...), even though it does not really look nice. I will probably switch to python anyway soon. The pi4j libary seems pretty messy to me. – user84037 Dec 27 '18 at 13:06

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.