From 2c7c91e64775af35732e8233bb7b34f75dbe40cc Mon Sep 17 00:00:00 2001 From: Dave Cheney Date: Sun, 25 Oct 2026 13:25:31 +1100 Subject: [PATCH] examples/apa102: add red Cylon sweep example for Blinkt! --- examples/apa102/blinkt-cylon/main.go | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 examples/apa102/blinkt-cylon/main.go diff --git a/examples/apa102/blinkt-cylon/main.go b/examples/apa102/blinkt-cylon/main.go new file mode 100644 index 000000000..1a4c22972 --- /dev/null +++ b/examples/apa102/blinkt-cylon/main.go @@ -0,0 +1,37 @@ +// Draws a red Cylon sweep on a Pimoroni Blinkt! connected to the 40 pin +// header of a Waveshare RP2040-PiZero. +// https://shop.pimoroni.com/products/blinkt +package main + +import ( + "image/color" + "machine" + "time" + + "tinygo.org/x/drivers/apa102" +) + +const numLEDs = 8 + +func main() { + // Blinkt! uses BCM23 for data and BCM24 for clock. These are not + // hardware SPI pins on the RP2040, so use software SPI. + leds := apa102.NewSoftwareSPI(machine.GP24, machine.GP23, 1) + + var c [numLEDs]color.RGBA + pos, dir := 0, 1 + for { + for i := range c { + c[i].R /= 4 + c[i].A = 0x20 + } + c[pos].R = 0xff + leds.WriteColors(c[:]) + + if pos+dir < 0 || pos+dir >= numLEDs { + dir = -dir + } + pos += dir + time.Sleep(80 * time.Millisecond) + } +}