登录
首页 >  Golang >  Go问答

可以在调用 MakeWS2811() 函数后更改 rpi-ws281x-go 库中 LED 的亮度吗?

来源:stackoverflow

时间:2024-03-15 19:09:27 168浏览 收藏

在使用 rpi-ws281x-go 库控制 WS2812 LED 时,用户希望在调用 MakeWS2811() 函数后调整 LED 亮度。虽然 C 代码允许更改亮度,但 Go 包装器中似乎缺少此功能。

问题内容

我一直在使用 Raspberry Pi 和 Golang 来制作一些 WS2812 LED 的动画。我一直在使用 rpi-ws281x-go (https://github.com/rpi-ws281x/rpi-ws281x-go) 库,它是 C 库的 Go 包装器 (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 lib 渲染时,它仍然是您根据原始亮度设置的颜色 scales

终于介绍完啦!小伙伴们,这篇关于《可以在调用 MakeWS2811() 函数后更改 rpi-ws281x-go 库中 LED 的亮度吗?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>