diff --git a/examples/event/event.go b/examples/event/event.go new file mode 100644 index 0000000..5d24403 --- /dev/null +++ b/examples/event/event.go @@ -0,0 +1,48 @@ +/* + +An example of edge event handling by @Drahoslav7, using the go-rpio library + +Waits for button to be pressed before exit. + +Connect a button between pin 22 and some GND pin. + +*/ + +package main + +import ( + "fmt" + "time" + "os" + "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 { + if pin.EdgeDetected() { // check if event occured + fmt.Println("button pressed less than a second ago") + break + } + time.Sleep(time.Second) + } + pin.Detect(rpio.NoEdge) // disable edge event detection +}