有没有办法在调用 MakeWS2811() 后修改 rpi-ws281x-go 库中 LED 的亮度?

Is there a way to modify the brightness of LEDs in rpi-ws281x-go library after calling MakeWS2811()?

我一直在使用 Raspberry Pi 和 Golang 来制作一些 WS2812 LED 的动画。我一直在使用 rpi-ws281x-go (https://github.com/rpi-ws281x/rpi-ws281x-go) library which is a Go wrapper around a C library (https://github.com/jgarff/rpi_ws281x)。我对 C 不是很熟悉,更不用说 C 库的 Go 包装器了。

我可以看到在 C 代码中,我可以访问和更改每次调用渲染函数时应用的 LED 的亮度。但是,在 Go 包装器库中,我看不到访问该变量的方法。我可以看到,当我调用 ws2811.MakeWS2811(&opt) 时,我可以在 opt 结构中设置亮度。调用 MakeWS2811() 后如何更改亮度?

我知道如何在我自己的 Go 动画函数中应用我自己的亮度,但这似乎是多余的,因为 C 函数将做同样的事情。

@Clifford MakeWS2811(...) 确实接受了一个指针,但看起来它复制了 C 中的选项。

但是返回的实例有一个 Leds(nChannel) 方法,可以直接访问设置 LED 的颜色。您可以降低颜色值以降低亮度(大约)。

...
opt.Channels[0].Brightness = ... original value 0 to 255
ws, err := MakeWS2811(&opts)
...

ws.Leds(0)[0] = 0xff //bright red
ws.Leds(0)[1] = 0x7f //half as bright
ws.Render()

请注意,每次 C 库渲染时,它仍然 scales 您根据原始亮度设置的颜色。