Pi4JでRaspberry pi3でのプッシュボタン認識サンプル

Raspberry piの Javaのサンプルをいろいろ作っていますが、今回初ですな。
今回は、ボタンを認識する方法はどうしようかなぁぁーなんて思って調査してみました。

ソースはこちら : https://github.com/wataru775/sample-p4j-button

回路図は…

ここから拝借 : https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_switches/
3Vを開閉しているので下かな。抵抗も10kΩ , 1kΩをそんな感じですね。

package org.mmpp.sample.pi4j;

import com.pi4j.io.gpio.*;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class Application {
    private static GpioController gpio;
    private static GpioPinDigitalInput button;
    private static void initialize() {
        gpio = GpioFactory.getInstance();
        // gpio pin #02 as an input pin with its internal pull down resistor enabled
        button = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, PinPullResistance.PULL_DOWN);
        // set shutdown state for this input pin
        button.setShutdownOptions(true);

        // create and register gpio pin listener
        button.addListener(new GpioPinListenerDigital(){
            @Override
            public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event)
            {
                // display pin state on console
                System.out.println(" Switch change detected: " + event.getPin() + " = " + event.getState());
            }

        });
    }

    public static void main(String[] args) throws Exception {
        System.out.println("<--Pi4J--> GPIO Listen Example ... started.");

        initialize();
        // keep program running until user aborts (CTRL-C)
        while(true) {
            Thread.sleep(1500);
        }
    }

}

ま、こんな感じですね。
今作ったのもありますが、これからちょっぴりずつサンプルをあげていきますね