gobot.io/x/gobot/v2@v2.1.0/examples/firmata_buzzer.go (about) 1 //go:build example 2 // +build example 3 4 // 5 // Do not build by default. 6 7 /* 8 How to run 9 Pass serial port to use as the first param: 10 11 go run examples/firmata_buzzer.go /dev/ttyACM0 12 */ 13 14 package main 15 16 import ( 17 "os" 18 "time" 19 20 "gobot.io/x/gobot/v2" 21 "gobot.io/x/gobot/v2/drivers/gpio" 22 "gobot.io/x/gobot/v2/platforms/firmata" 23 ) 24 25 func main() { 26 firmataAdaptor := firmata.NewAdaptor(os.Args[1]) 27 buzzer := gpio.NewBuzzerDriver(firmataAdaptor, "3") 28 29 work := func() { 30 type note struct { 31 tone float64 32 duration float64 33 } 34 35 song := []note{ 36 {gpio.C4, gpio.Quarter}, 37 {gpio.C4, gpio.Quarter}, 38 {gpio.G4, gpio.Quarter}, 39 {gpio.G4, gpio.Quarter}, 40 {gpio.A4, gpio.Quarter}, 41 {gpio.A4, gpio.Quarter}, 42 {gpio.G4, gpio.Half}, 43 {gpio.F4, gpio.Quarter}, 44 {gpio.F4, gpio.Quarter}, 45 {gpio.E4, gpio.Quarter}, 46 {gpio.E4, gpio.Quarter}, 47 {gpio.D4, gpio.Quarter}, 48 {gpio.D4, gpio.Quarter}, 49 {gpio.C4, gpio.Half}, 50 } 51 52 for _, val := range song { 53 buzzer.Tone(val.tone, val.duration) 54 time.Sleep(10 * time.Millisecond) 55 } 56 } 57 58 robot := gobot.NewRobot("bot", 59 []gobot.Connection{firmataAdaptor}, 60 []gobot.Device{buzzer}, 61 work, 62 ) 63 64 robot.Start() 65 }