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