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 } } }
func main() { flag.Parse() if err := embd.InitI2C(); err != nil { panic(err) } defer embd.CloseI2C() bus := embd.NewI2CBus(1) pca9685 := pca9685.New(bus, 0x41) pca9685.Freq = 1000 defer pca9685.Close() if err := pca9685.SetPwm(15, 0, 2000); err != nil { panic(err) } c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, os.Kill) timer := time.Tick(2 * time.Second) sleeping := false for { select { case <-timer: sleeping = !sleeping if sleeping { pca9685.Sleep() } else { pca9685.Wake() } case <-c: return } } }