mirror of
https://github.com/kidoman/embd
synced 2024-12-21 20:30:05 +01:00
bring the matrix4x3 library up to date
This commit is contained in:
parent
36f2c0486d
commit
ca6eb80458
@ -6,7 +6,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/kidoman/embd/gpio"
|
||||
"github.com/kidoman/embd"
|
||||
)
|
||||
|
||||
type Key int
|
||||
@ -68,7 +68,7 @@ func init() {
|
||||
|
||||
// A Matrix4x3 struct represents access to the keypad.
|
||||
type Matrix4x3 struct {
|
||||
rowPins, colPins []gpio.DigitalPin
|
||||
rowPins, colPins []embd.DigitalPin
|
||||
|
||||
initialized bool
|
||||
mu sync.RWMutex
|
||||
@ -82,20 +82,20 @@ type Matrix4x3 struct {
|
||||
// New creates a new interface for matrix4x3.
|
||||
func New(rowPins, colPins []int) (*Matrix4x3, error) {
|
||||
m := &Matrix4x3{
|
||||
rowPins: make([]gpio.DigitalPin, rows),
|
||||
colPins: make([]gpio.DigitalPin, cols),
|
||||
rowPins: make([]embd.DigitalPin, rows),
|
||||
colPins: make([]embd.DigitalPin, cols),
|
||||
poll: pollDelay,
|
||||
}
|
||||
|
||||
var err error
|
||||
for i := 0; i < rows; i++ {
|
||||
m.rowPins[i], err = gpio.NewDigitalPin(rowPins[i])
|
||||
m.rowPins[i], err = embd.NewDigitalPin(rowPins[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
for i := 0; i < cols; i++ {
|
||||
m.colPins[i], err = gpio.NewDigitalPin(colPins[i])
|
||||
m.colPins[i], err = embd.NewDigitalPin(colPins[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -121,7 +121,7 @@ func (d *Matrix4x3) setup() error {
|
||||
defer d.mu.Unlock()
|
||||
|
||||
for i := 0; i < rows; i++ {
|
||||
if err := d.rowPins[i].SetDirection(gpio.In); err != nil {
|
||||
if err := d.rowPins[i].SetDirection(embd.In); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.rowPins[i].PullUp(); err != nil {
|
||||
@ -130,10 +130,10 @@ func (d *Matrix4x3) setup() error {
|
||||
}
|
||||
|
||||
for i := 0; i < cols; i++ {
|
||||
if err := d.colPins[i].SetDirection(gpio.Out); err != nil {
|
||||
if err := d.colPins[i].SetDirection(embd.Out); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.colPins[i].Write(gpio.High); err != nil {
|
||||
if err := d.colPins[i].Write(embd.High); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -149,7 +149,7 @@ func (d *Matrix4x3) findPressedKey() (Key, error) {
|
||||
}
|
||||
|
||||
for col := 0; col < cols; col++ {
|
||||
if err := d.colPins[col].Write(gpio.Low); err != nil {
|
||||
if err := d.colPins[col].Write(embd.Low); err != nil {
|
||||
return KNone, err
|
||||
}
|
||||
for row := 0; row < rows; row++ {
|
||||
@ -157,22 +157,22 @@ func (d *Matrix4x3) findPressedKey() (Key, error) {
|
||||
if err != nil {
|
||||
return KNone, err
|
||||
}
|
||||
if value == gpio.Low {
|
||||
if value == embd.Low {
|
||||
time.Sleep(debounce)
|
||||
|
||||
value, err = d.rowPins[row].Read()
|
||||
if err != nil {
|
||||
return KNone, err
|
||||
}
|
||||
if value == gpio.Low {
|
||||
if err := d.colPins[col].Write(gpio.High); err != nil {
|
||||
if value == embd.Low {
|
||||
if err := d.colPins[col].Write(embd.High); err != nil {
|
||||
return KNone, err
|
||||
}
|
||||
return keyMap[row][col], nil
|
||||
}
|
||||
}
|
||||
}
|
||||
if err := d.colPins[col].Write(gpio.High); err != nil {
|
||||
if err := d.colPins[col].Write(embd.High); err != nil {
|
||||
return KNone, err
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,7 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/kidoman/embd/gpio"
|
||||
"github.com/kidoman/embd"
|
||||
"github.com/kidoman/embd/interface/keypad/matrix4x3"
|
||||
)
|
||||
|
||||
@ -14,10 +13,10 @@ func main() {
|
||||
rowPins := []int{4, 17, 27, 22}
|
||||
colPins := []int{23, 24, 25}
|
||||
|
||||
if err := gpio.Open(); err != nil {
|
||||
if err := embd.InitGPIO(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer gpio.Close()
|
||||
defer embd.CloseGPIO()
|
||||
|
||||
keypad, err := matrix4x3.New(rowPins, colPins)
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user