gobot.io/x/gobot@v1.16.0/examples/raspi_adafruit_stepper.go (about) 1 // +build example 2 // 3 // Do not build by default. 4 5 package main 6 7 import ( 8 "log" 9 "time" 10 11 "gobot.io/x/gobot" 12 "gobot.io/x/gobot/drivers/i2c" 13 "gobot.io/x/gobot/platforms/raspi" 14 ) 15 16 func adafruitStepperMotorRunner(a *i2c.AdafruitMotorHatDriver, motor int) (err error) { 17 log.Printf("Stepper Motor Run Loop...\n") 18 // set the speed state: 19 speed := 30 // rpm 20 style := i2c.AdafruitDouble 21 steps := 20 22 23 a.SetStepperMotorSpeed(motor, speed) 24 25 if err = a.Step(motor, steps, i2c.AdafruitForward, style); err != nil { 26 log.Printf(err.Error()) 27 return 28 } 29 if err = a.Step(motor, steps, i2c.AdafruitBackward, style); err != nil { 30 log.Printf(err.Error()) 31 return 32 } 33 return 34 } 35 36 func main() { 37 r := raspi.NewAdaptor() 38 adaFruit := i2c.NewAdafruitMotorHatDriver(r) 39 40 work := func() { 41 gobot.Every(5*time.Second, func() { 42 motor := 0 // 0-based 43 adafruitStepperMotorRunner(adaFruit, motor) 44 }) 45 } 46 47 robot := gobot.NewRobot("adaFruitBot", 48 []gobot.Connection{r}, 49 []gobot.Device{adaFruit}, 50 work, 51 ) 52 53 robot.Start() 54 }