goblib
A library for gobot based projects.
TODO
- use for gobrail
- add HX711
Pin configuration differences to tiny-go
type outputPinner interface {
Set(val bool) error
Configure() error
}
type inputPinner interface {
Get() (bool, error)
ConfigurePullup() error
}
tiny-go
type outputPin struct {
pin machine.Pin
}
type inputPin struct {
pin machine.Pin
}
func (op outputPin) Set(v bool) error {
op.pin.Set(v)
return nil
}
func (op outputPin) Configure() error {
op.pin.Configure(machine.PinConfig{Mode: machine.PinOutput})
return nil
}
func (ip inputPin) Get() (bool, error) {
return ip.pin.Get(), nil
}
func (ip inputPin) ConfigurePullup() error {
ip.pin.Configure(machine.PinConfig{Mode: machine.PinInputPullup})
return nil
}
gobot
type outputPin struct {
id string
provider gobot.DigitalPinnerProvider
// runtime
pin gobot.DigitalPinner
}
type inputPin struct {
id string
provider gobot.DigitalPinnerProvider
// runtime
pin gobot.DigitalPinner
}
func (outpin *outputPin) Set(v bool) error {
var val int
if v {
val = 1
}
return outpin.pin.Write(val)
}
func (outpin *outputPin) Configure() error {
pin, err := outpin.provider.DigitalPin(outpin.id)
if err != nil {
return fmt.Errorf("error on get pin '%s': %v", outpin.id, err)
}
if err := pin.ApplyOptions(system.WithPinDirectionOutput(0)); err != nil {
return fmt.Errorf("error on set pin '%s' as output: %v", outpin.id, err)
}
outpin.pin = pin
return nil
}
func (inpin *inputPin) ConfigurePullup() error {
pin, err := inpin.provider.DigitalPin(inpin.id)
if err != nil {
return fmt.Errorf("error on get pin '%s': %v", inpin.id, err)
}
if err := pin.ApplyOptions(system.WithPinPullUp()); err != nil {
return fmt.Errorf("error on set pin '%s' with pull up: %v", inpin.id, err)
}
inpin.pin = pin
return nil
}
func (inpin *inputPin) Get() (bool, error) {
val, err := inpin.pin.Read()
return val > 0, err
}