Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // +build ignore | |
| package main | |
| import ( | |
| "flag" | |
| "os" | |
| "os/signal" | |
| "time" | |
| "github.com/kidoman/embd" | |
| "github.com/kidoman/embd/controller/pca9685" | |
| "github.com/kidoman/embd/motion/servo" | |
| _ "github.com/kidoman/embd/host/all" | |
| ) | |
| func main() { | |
| flag.Parse() | |
| if err := embd.InitI2C(); err != nil { | |
| panic(err) | |
| } | |
| defer embd.CloseI2C() | |
| bus := embd.NewI2CBus(1) | |
| d := pca9685.New(bus, 0x41) | |
| d.Freq = 50 | |
| defer d.Close() | |
| pwm := d.ServoChannel(0) | |
| servo := servo.New(pwm) | |
| c := make(chan os.Signal, 1) | |
| signal.Notify(c, os.Interrupt, os.Kill) | |
| turnTimer := time.Tick(500 * time.Millisecond) | |
| left := true | |
| servo.SetAngle(90) | |
| defer func() { | |
| servo.SetAngle(90) | |
| }() | |
| for { | |
| select { | |
| case <-turnTimer: | |
| left = !left | |
| switch left { | |
| case true: | |
| servo.SetAngle(70) | |
| case false: | |
| servo.SetAngle(110) | |
| } | |
| case <-c: | |
| return | |
| } | |
| } | |
| } |