diff --git a/examples/firmata_buzzer.go b/examples/firmata_buzzer.go new file mode 100644 index 00000000..c6134c9c --- /dev/null +++ b/examples/firmata_buzzer.go @@ -0,0 +1,55 @@ +package main + +import ( + "time" + + "github.com/hybridgroup/gobot" + "github.com/hybridgroup/gobot/platforms/firmata" + "github.com/hybridgroup/gobot/platforms/gpio" +) + +func main() { + gbot := gobot.NewGobot() + + firmataAdaptor := firmata.NewFirmataAdaptor("arduino", "/dev/ttyACM0") + buzzer := gpio.NewBuzzerDriver(firmataAdaptor, "buzzer", "3") + + work := func() { + type note struct { + tone float64 + duration float64 + } + + song := []note{ + {gpio.C4, gpio.Quarter}, + {gpio.C4, gpio.Quarter}, + {gpio.G4, gpio.Quarter}, + {gpio.G4, gpio.Quarter}, + {gpio.A4, gpio.Quarter}, + {gpio.A4, gpio.Quarter}, + {gpio.G4, gpio.Half}, + {gpio.F4, gpio.Quarter}, + {gpio.F4, gpio.Quarter}, + {gpio.E4, gpio.Quarter}, + {gpio.E4, gpio.Quarter}, + {gpio.D4, gpio.Quarter}, + {gpio.D4, gpio.Quarter}, + {gpio.C4, gpio.Half}, + } + + for _, val := range song { + buzzer.Tone(val.tone, val.duration) + <-time.After(10 * time.Millisecond) + } + } + + robot := gobot.NewRobot("bot", + []gobot.Connection{firmataAdaptor}, + []gobot.Device{buzzer}, + work, + ) + + gbot.AddRobot(robot) + + gbot.Start() +}