# Определить цвета RGB для NeoPIxel

Я играю с NeoPixels на Particle Photon. Получите пример кода, который запускает неопикселей в разные цвета. Однако немного запутался в том, как расширить это, особенно с тем, как он определил цвета неопикселя.

Эскиз определяет цвета как

#define BLUE 5,5,190
#define WHITE 150,150,150
#define GREEN 10,180,10

и вызывает следующую функцию Spin таким способом

spin (BLUE);

void spin(int R, int G, int B) {
for(i=0; i < PIXEL_COUNT; i++) {
strip.setPixelColor(i, R,G,B);
strip.show();
delay(waitTime);
}
for(i=0; i < PIXEL_COUNT; i++) {
strip.setPixelColor(i, 0,0,0);
strip.show();
delay(waitTime);
}
}

Я хочу отправить команды Photon, чтобы изменить цвет, поэтому нужно установить переменную, равную одному из определенных цветов, и перейти к функции вращения.
Однако установить переменную в Int не удается, т.е.

int lightcolor = BLUE;

Я также попробовал массив

int lightcolor [] = BLUE;

это тоже не получается.

мне удалось получить
int lightcolor [1,1,1] = BLUE

передать компилятор, но он не прошел функциональный вызов

спина (lightcolor)

или же
спина (lightcolor [1,1,1]}

просто не уверен, что мне здесь не хватает в отношении того, как #define объявляет это const и как использовать его на протяжении всего эскиза

Спасибо

0

Решение

Вы должны посмотреть, что на самом деле является оператором define. Препроцессор заменит СИНИЙ символами 5,5,190 в исходном файле еще до того, как компилятор его увидит.

Таким образом, вращение (СИНИЙ) работает, потому что вращение (5,5,190) работает. Если вы хотите назначить СИНИЙ переменной, вам фактически нужно назначить ее трем переменным, потому что вращение требует трех независимых переменных, по одной для каждого цветового канала. Зачем вообще назначать переменную? Почему бы не использовать определение?

Прочитайте введение в c или c ++ (это разные языки) и узнайте, что вы делаете. Суетиться вслепую, как будто вы делаете, вряд ли даст хорошие результаты.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]