💾 Archived View for capsule.adrianhesketh.com › 2019 › 09 › 28 › raspberry-pi-4x4-keypad-with-go captured on 2023-04-19 at 22:56:44. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
I'm building a burglar alam with my son, using a Raspberry Pi Zero as the micro-controller, and using Go as the programming language.
That's led to me needing a few libraries along the way. Today's library is the 4x4 keypad.
The code is available at [0]
It was harder to write than you might expect, because it relies on switching on each column in turn and reading the row value very quickly to determine which key was pressed, however, this keypad design reduces the number of GPIO pins required which makes it a good choice.
err := rpio.Open() if err != nil { fmt.Printf("error: %v\n", err) os.Exit(1) } defer rpio.Close() // See https://pinout.xyz to select pins. p1 := rpio.Pin(4) p2 := rpio.Pin(17) p3 := rpio.Pin(27) p4 := rpio.Pin(22) p5 := rpio.Pin(18) p6 := rpio.Pin(23) p7 := rpio.Pin(24) p8 := rpio.Pin(25) pad := keypad.New(p1, p2, p3, p4, p5, p6, p7, p8) for { if keys, ok := pad.Read(); ok { for _, e := range keys { fmt.Printf("Key: %+v\n", e) } } }
Raspberry Pi piezo buzzer with Go
Serving Web content and redirects from the domain apex without Route53 on AWS