mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-05 23:43:41 +00:00
dcf53ac04a
Signed-off-by: deadprogram <ron@hybridgroup.com>
30 lines
575 B
Go
30 lines
575 B
Go
package easystepper
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
|
|
"tinygo.org/x/drivers/internal/pin"
|
|
)
|
|
|
|
func NewCrossPlatform(stepcount, rpm uint, mode StepMode, pins [4]pin.Output) (*Device, error) {
|
|
if stepcount == 0 || rpm == 0 {
|
|
return nil, errors.New("zero rpm and/or stepcount")
|
|
}
|
|
var ps [4]pin.OutputFunc
|
|
|
|
for i := range pins {
|
|
if pins[i] == nil {
|
|
return nil, errors.New("nil pin")
|
|
}
|
|
ps[i] = pins[i].Set
|
|
}
|
|
d := &Device{
|
|
pins: ps,
|
|
stepDelay: time.Second * 60 / time.Duration((stepcount * rpm)),
|
|
stepMode: mode,
|
|
config: func() {},
|
|
}
|
|
return d, nil
|
|
}
|