Аргументы CHSV с FastLED
Я пытаюсь использовать CHSV с библиотекой FastLED, и, как я понимаю, оттенок, значение и насыщенность в типе CHSV имеют тип uint8_t или 1 байт.
Моя проблема связана с использованием переменных:
CHSV led = (hue, sat, val);
с:
uint8_t hue;
uint8_t sat;
uint8_t val;
Есть ли разница между типами данных uint8_t и byte? что это такое и как его использовать в контексте Arduino и библиотеки FastLED?
Я ошибаюсь в синтаксисе? Я получаю сообщение об ошибке: требуется преобразование из uint8_t в нескалярный тип CHSV. Я думал, что библиотека делает это сама по себе, нужно ли мне добавлять код? Если да, то какой код?
Спасибо
@Toma, 👍0
1 ответ
Лучший ответ:
Есть ли разница между типами данных uint8_t и byte?
Нет разницы в типе данных. byte
определен в Arduino.h:
typedef uint8_t byte;
Итак, uint8_t
и byte
абсолютно одинаковы. Типы uintX_t
и их братья и сестры специально предназначены для того, чтобы иметь одинаковый размер на каждой платформе (в отличие, например, от double
, который на Arduino Uno всего 16 бит, но может быть 32 бита на больших чипах). Но byte
также будет 8-битным на каждой платформе, так что особой разницы нет.
Я ошибаюсь в синтаксисе? Я получаю сообщение об ошибке: требуется преобразование из uint8_t в нескалярный тип CHSV. Я думал, что библиотека делает это сама по себе, нужно ли мне добавлять код? Если да, то какой код?
Вы получаете ошибку, потому что используете здесь неправильный синтаксис. Цвет CHSV
— это не просто 3-байтовые значения, это класс с переменными-членами и методами. Таким образом, вы не можете просто присвоить 3-байтовые значения непосредственно объекту. Вам нужно фактически создать объект, используя значения в качестве параметров для конструктора:
CHSV led = CHSV( hue, sat, val);
При этом создается объект CHSV
, выполняется его конструктор, который использует значения из параметров для установки внутренних значений. Это контекст, как это используется в библиотеке FastLED. Вы также можете найти такие строки в примерах библиотеки (я нашел такое использование в строке 15 примера ColorPalette
, но может быть и больше). Также действует тот же принцип, что и с другими классами цветов, такими как CRGB
.
- Использование аккумуляторов 18650 с повышающим преобразователем 3,7 В в 5 В.
- Устранение неисправностей светодиодной ленты WS2812B
- Нужно ли подключать светодиодную ленту WS2812 «последовательно», если я хочу адресовать каждый светодиод отдельно?
- Матрица СИД силы с батареей LiPo и ESP32
- Методология проектирования/прототипирования светодиодных схем
- WS2812 Проблема с цветом матрицы. Власть?
- Питание светодиодной ленты - Сколько ампер?
- Несколько условий оператора if