diff --git a/samples/.gitignore b/samples/.gitignore index e3c16bb..836f1c7 100644 --- a/samples/.gitignore +++ b/samples/.gitignore @@ -20,5 +20,6 @@ servobbb servoblaster simpleblinker tmp006 +universalblinker us020 watersensor diff --git a/samples/universalblinker.go b/samples/universalblinker.go new file mode 100644 index 0000000..e89547b --- /dev/null +++ b/samples/universalblinker.go @@ -0,0 +1,59 @@ +// +build ignore + +// Universal LED blinker, works OOTB on a RPi / BBB. + +package main + +import ( + "flag" + "os" + "os/signal" + "time" + + "github.com/kidoman/embd" + _ "github.com/kidoman/embd/host/all" +) + +func main() { + flag.Parse() + + panicIf(embd.InitLED()) + defer embd.CloseLED() + + led, err := embd.NewLED(ledToBlink()) + panicIf(err) + defer led.Off() + + quit := make(chan os.Signal, 1) + signal.Notify(quit, os.Interrupt, os.Kill) + defer signal.Stop(quit) + + for { + select { + case <-time.After(250 * time.Millisecond): + panicIf(led.Toggle()) + case <-quit: + return + } + } +} + +func ledToBlink() string { + host, _, err := embd.DetectHost() + panicIf(err) + + switch host { + case embd.HostRPi: + return "LED0" + case embd.HostBBB: + return "USR3" + } + + panic("Unsupported host") +} + +func panicIf(err error) { + if err != nil { + panic(err) + } +}