mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-05 15:33:42 +00:00
mcp23017: new driver for MCP23017 (I2C port expander)
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"machine"
|
||||
|
||||
"tinygo.org/x/drivers/mcp23017"
|
||||
)
|
||||
|
||||
func main() {
|
||||
err := machine.I2C0.Configure(machine.I2CConfig{
|
||||
Frequency: machine.TWI_FREQ_400KHZ,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
dev, err := mcp23017.NewI2C(machine.I2C0, 0x20)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
// Configure pin 0 for input and all the others for output.
|
||||
if err := dev.SetModes([]mcp23017.PinMode{
|
||||
mcp23017.Input | mcp23017.Pullup,
|
||||
mcp23017.Output,
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
input := dev.Pin(0)
|
||||
outputMask := ^mcp23017.Pins(1 << 0) // All except pin 0
|
||||
inputVal, err := input.Get()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
println("input value: ", inputVal)
|
||||
// Set the values of all the output pins.
|
||||
err = dev.SetPins(0b1011011_01101110, outputMask)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user