环境
在Windows要注意交叉编译设置, 这个库目前没有使用C, 所以不需要配置GCC、G++, 配置如下
GOOS=linux
GOARCH=arm
代码
package mainimport ("fmt""github.com/stianeikeland/go-rpio/v4""os""time"
)var (// Use mcu pin 22, corresponds to GPIO3 on the pipin = rpio.Pin(27)gpioChangedChan = make(chan rpio.State)
)func main() {// Open and map memory to access gpio, check for errorsif err := rpio.Open(); err != nil {fmt.Println(err)os.Exit(1)}// Unmap gpio memory when donedefer rpio.Close()// Pull up and read valuepin.PullUp()pin.Input() ////fmt.Printf("PullUp: %d, %d\n", pin.Read(), pin.ReadPull())go func() {var status = rpio.Highvar temp = rpio.Highfor {temp = pin.Read()if temp != status {status = tempgpioChangedChan <- temp}time.Sleep(time.Millisecond * 100)}}()for {select {case currState := <-gpioChangedChan:if rpio.Low == currState {fmt.Println("Key Pressed!")} else {fmt.Println("Key Released!")}}}}
共赏
Golang实现树莓派引脚控制-按键输入
参考
GPIO and the 40-pin header
go-rpio 库