Documentation ¶
Overview ¶
Package single implements a single-wire odometer, such as LM393, as an encoder. This allows the attached motor to determine its relative position. This class of encoders requires a single digital interrupt pin.
This encoder must be connected to a motor (or another component that supports encoders and reports the direction it is moving) in order to record readings. The motor indicates in which direction it is spinning, thus indicating if the encoder should increment or decrement reading value.
Resetting a position must set the position to an int64. A floating point input will be rounded.
Sample configuration:
{ "pins" : { "i": 10 }, "board": "pi" }
Index ¶
- func NewSingleEncoder(ctx context.Context, deps resource.Dependencies, conf resource.Config, ...) (encoder.Encoder, error)
- type Config
- type DirectionAware
- type Encoder
- func (e *Encoder) AttachDirectionalAwareness(da DirectionAware)
- func (e *Encoder) Close(ctx context.Context) error
- func (e *Encoder) Position(ctx context.Context, positionType encoder.PositionType, ...) (float64, encoder.PositionType, error)
- func (e *Encoder) Properties(ctx context.Context, extra map[string]interface{}) (map[encoder.Feature]bool, error)
- func (e *Encoder) Reconfigure(ctx context.Context, deps resource.Dependencies, conf resource.Config) error
- func (e *Encoder) ResetPosition(ctx context.Context, extra map[string]interface{}) error
- func (e *Encoder) Start(ctx context.Context)
- type Pin
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DirectionAware ¶
type DirectionAware interface {
DirectionMoving() int64
}
DirectionAware lets you ask what direction something is moving. Only used for Encoder for now, unclear future. DirectionMoving returns -1 if the motor is currently turning backwards, 1 if forwards and 0 if off.
type Encoder ¶
type Encoder struct { resource.Named I board.DigitalInterrupt // TODO(RSDK-2672): This is exposed for tests and should be unexported with // the constructor being used instead. CancelCtx context.Context // contains filtered or unexported fields }
Encoder keeps track of a motor position using a rotary encoder.s.
func (*Encoder) AttachDirectionalAwareness ¶
func (e *Encoder) AttachDirectionalAwareness(da DirectionAware)
AttachDirectionalAwareness to pre-created encoder.
func (*Encoder) Position ¶ added in v0.2.50
func (e *Encoder) Position( ctx context.Context, positionType encoder.PositionType, extra map[string]interface{}, ) (float64, encoder.PositionType, error)
Position returns the current position in terms of ticks or degrees, and whether it is a relative or absolute position.
func (*Encoder) Properties ¶ added in v0.2.50
func (e *Encoder) Properties(ctx context.Context, extra map[string]interface{}) (map[encoder.Feature]bool, error)
Properties returns a list of all the position types that are supported by a given encoder.
func (*Encoder) Reconfigure ¶ added in v0.2.36
func (e *Encoder) Reconfigure( ctx context.Context, deps resource.Dependencies, conf resource.Config, ) error
Reconfigure atomically reconfigures this encoder in place based on the new config.
func (*Encoder) ResetPosition ¶
ResetPosition sets the current position of the motor (adjusted by a given offset).