/* An example of edge event handling by @Drahoslav7, using the go-rpio library Waits for button to be pressed twice before exit. Connect a button between pin 22 and some GND pin. */ package main import ( "fmt" "os" "time" "github.com/stianeikeland/go-rpio" ) var ( // Use mcu pin 22, corresponds to GPIO 3 on the pi pin = rpio.Pin(22) ) func main() { // Open and map memory to access gpio, check for errors if err := rpio.Open(); err != nil { fmt.Println(err) os.Exit(1) } // Unmap gpio memory when done defer rpio.Close() pin.Input() pin.PullUp() pin.Detect(rpio.FallEdge) // enable falling edge event detection fmt.Println("press a button") for i := 0; i < 2; { if pin.EdgeDetected() { // check if event occured fmt.Println("button pressed") i++ } time.Sleep(time.Second / 2) } pin.Detect(rpio.NoEdge) // disable edge event detection }