mirror of
https://github.com/hybridgroup/gobot.git
synced 2025-04-26 13:48:49 +08:00
87 lines
1.5 KiB
Go
87 lines
1.5 KiB
Go
package gpio
|
|
|
|
import (
|
|
"github.com/hybridgroup/gobot"
|
|
)
|
|
|
|
type LedDriver struct {
|
|
gobot.Driver
|
|
Adaptor PwmDigitalWriter
|
|
High bool
|
|
}
|
|
|
|
func NewLedDriver(a PwmDigitalWriter, name string, pin string) *LedDriver {
|
|
l := &LedDriver{
|
|
Driver: gobot.Driver{
|
|
Name: name,
|
|
Pin: pin,
|
|
Commands: make(map[string]func(map[string]interface{}) interface{}),
|
|
},
|
|
High: false,
|
|
Adaptor: a,
|
|
}
|
|
|
|
l.Driver.AddCommand("Brightness", func(params map[string]interface{}) interface{} {
|
|
level := byte(params["level"].(float64))
|
|
l.Brightness(level)
|
|
return nil
|
|
})
|
|
|
|
l.Driver.AddCommand("Toggle", func(params map[string]interface{}) interface{} {
|
|
l.Toggle()
|
|
return nil
|
|
})
|
|
|
|
l.Driver.AddCommand("On", func(params map[string]interface{}) interface{} {
|
|
l.On()
|
|
return nil
|
|
})
|
|
|
|
l.Driver.AddCommand("Off", func(params map[string]interface{}) interface{} {
|
|
l.Off()
|
|
return nil
|
|
})
|
|
|
|
return l
|
|
}
|
|
|
|
func (l *LedDriver) Start() bool { return true }
|
|
func (l *LedDriver) Halt() bool { return true }
|
|
func (l *LedDriver) Init() bool { return true }
|
|
|
|
func (l *LedDriver) IsOn() bool {
|
|
return l.High
|
|
}
|
|
|
|
func (l *LedDriver) IsOff() bool {
|
|
return !l.IsOn()
|
|
}
|
|
|
|
func (l *LedDriver) On() bool {
|
|
l.changeState(1)
|
|
l.High = true
|
|
return true
|
|
}
|
|
|
|
func (l *LedDriver) Off() bool {
|
|
l.changeState(0)
|
|
l.High = false
|
|
return true
|
|
}
|
|
|
|
func (l *LedDriver) Toggle() {
|
|
if l.IsOn() {
|
|
l.Off()
|
|
} else {
|
|
l.On()
|
|
}
|
|
}
|
|
|
|
func (l *LedDriver) Brightness(level byte) {
|
|
l.Adaptor.PwmWrite(l.Pin, level)
|
|
}
|
|
|
|
func (l *LedDriver) changeState(level byte) {
|
|
l.Adaptor.DigitalWrite(l.Pin, level)
|
|
}
|