Аргументы CHSV с FastLED

Я пытаюсь использовать CHSV с библиотекой FastLED, и, как я понимаю, оттенок, значение и насыщенность в типе CHSV имеют тип uint8_t или 1 байт.

Моя проблема связана с использованием переменных:

CHSV led = (hue, sat, val); 

с:

uint8_t hue;
uint8_t sat;
uint8_t val;
  1. Есть ли разница между типами данных uint8_t и byte? что это такое и как его использовать в контексте Arduino и библиотеки FastLED?

  2. Я ошибаюсь в синтаксисе? Я получаю сообщение об ошибке: требуется преобразование из uint8_t в нескалярный тип CHSV. Я думал, что библиотека делает это сама по себе, нужно ли мне добавлять код? Если да, то какой код?

Спасибо

, 👍0


1 ответ


Лучший ответ:

2

Есть ли разница между типами данных 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.

,