goblib

module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 5, 2025 License: MIT

README

goblib

A library for gobot based projects.

TODO

  • use for gobrail
  • add HX711

Pin configuration differences to tiny-go

Interface definitions for inputs and outputs
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
}

Directories

Path Synopsis
devices
examples
electricpower command
levelsensor command
pulseactuator command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL