package main import ( "image/color" "machine" "time" "tinygo.org/x/drivers/ws2812" ) const ( Red = iota Green Blue Yellow Cyan Purple White Off ) var colors = [...]color.RGBA{ {255, 0, 0, 255}, // Red {0, 255, 0, 255}, // Green {0, 0, 255, 255}, // Blue {255, 255, 0, 255}, // Yellow {0, 255, 255, 255}, // Cyan {255, 0, 255, 255}, // Purple {255, 255, 255, 255}, // White {0, 0, 0, 255}, // Off } func main() { // WS2812 LEDs are on pin P1_11 neo := machine.P1_11 neo.Configure(machine.PinConfig{Mode: machine.PinOutput}) leds := ws2812.New(neo) ledColors := make([]color.RGBA, 2) // buttons: active LOW (internal pull-up) btnA := machine.P1_06 btnB := machine.P1_04 btnRot := machine.P0_22 // rotary encoder push button btnA.Configure(machine.PinConfig{Mode: machine.PinInputPullup}) btnB.Configure(machine.PinConfig{Mode: machine.PinInputPullup}) btnRot.Configure(machine.PinConfig{Mode: machine.PinInputPullup}) c := Off for { if !btnA.Get() { c = Red } if !btnB.Get() { c = Blue } if !btnRot.Get() { c = Green } for i := range ledColors { ledColors[i] = colors[c] } leds.WriteColors(ledColors) time.Sleep(30 * time.Millisecond) } }