Есть ли способ изменить яркость светодиодов в библиотеке rpi-ws281x-go после вызова MakeWS2811 ()? - PullRequest
0 голосов
/ 26 мая 2019

Я играл с Raspberry Pi и Golang, чтобы оживить некоторые светодиоды WS2812. Я использую библиотеку rpi-ws281x-go (https://github.com/rpi-ws281x/rpi-ws281x-go), которая является оболочкой Go для библиотеки C (https://github.com/jgarff/rpi_ws281x).) Я не очень хорошо знаком с C, не говоря уже о оболочках Go библиотек C .

Я вижу, что в коде C я могу получить доступ и изменить яркость светодиодов, которая применяется каждый раз, когда вызывается функция рендеринга. Однако в библиотеке оболочки Go я не вижу способа доступа к этой переменной. Я вижу, что когда я вызываю ws2811.MakeWS2811 (& opt), я могу установить яркость в структуре opt. Как изменить яркость после вызова MakeWS2811 ()?

Я знаю, как применить свою собственную яркость в моих собственных анимационных функциях в Go, но это кажется излишним, поскольку функция C собирается делать то же самое.

1 Ответ

1 голос
/ 27 мая 2019

@ Clifford MakeWS2811 (...) действительно получает указатель, но похоже, что он копирует параметры в C.

Однако возвращаемый экземпляр имеет метод Leds (nChannel) , предоставляющий прямой доступ к настройке цветов светодиодов. Вы можете уменьшить значение цвета, чтобы уменьшить яркость (приблизительно).

...
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 рендерит, он по-прежнему масштабирует цвета, которые вы установили в соответствии с исходной яркостью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...