2026年9月24日木曜日

tinygo raspberry pi pico and ws2812

 古いtinygoだと文句いわれながらチャットくんにつくてもらった 3.3v駆動のws2812

 package main

import (
    "image/color"
    "machine"
    "time"

    "tinygo.org/x/drivers/ws2812"
)

const numLEDs = 5
const ledPin = machine.GP15

func main() {
    ledPin.Configure(machine.PinConfig{Mode: machine.PinOutput})

    // ビットバン駆動の初期化
    ws := ws2812.New(ledPin)

    leds := make([]color.RGBA, numLEDs)

    for {
        // 1. 赤色に点灯
        fill(leds, color.RGBA{R: 0xFF, G: 0x00, B: 0x00})
        // colorsToBytesで変換した []byte を Write に渡す
        ws.Write(colorsToBytes(leds))
        time.Sleep(time.Second)

        // 2. 緑色に点灯
        fill(leds, color.RGBA{R: 0x00, G: 0xFF, B: 0x00})
        ws.Write(colorsToBytes(leds))
        time.Sleep(time.Second)
    }
}

func fill(leds []color.RGBA, c color.RGBA) {
    for i := range leds {
        leds[i] = c
    }
}

0 件のコメント:

コメントを投稿