mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
35 lines
752 B
Go
35 lines
752 B
Go
package encoders
|
|
|
|
type QuadratureDevice struct {
|
|
cfg QuadratureConfig
|
|
impl quadratureImpl
|
|
}
|
|
|
|
type QuadratureConfig struct {
|
|
Precision int
|
|
}
|
|
|
|
type quadratureImpl interface {
|
|
configure(cfg QuadratureConfig) error
|
|
readValue() int
|
|
writeValue(int)
|
|
}
|
|
|
|
func (enc *QuadratureDevice) Configure(cfg QuadratureConfig) error {
|
|
if cfg.Precision < 1 {
|
|
cfg.Precision = 4
|
|
}
|
|
enc.cfg = cfg
|
|
return enc.impl.configure(cfg)
|
|
}
|
|
|
|
// Position returns the stored int value for the encoder
|
|
func (enc *QuadratureDevice) Position() int {
|
|
return enc.impl.readValue() / enc.cfg.Precision
|
|
}
|
|
|
|
// SetPosition overwrites the currently stored value with the specified int value
|
|
func (enc *QuadratureDevice) SetPosition(v int) {
|
|
enc.impl.writeValue(v * enc.cfg.Precision)
|
|
}
|