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  }