Я играю с 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 и как использовать его на протяжении всего эскиза
Спасибо
Вы должны посмотреть, что на самом деле является оператором define. Препроцессор заменит СИНИЙ символами 5,5,190 в исходном файле еще до того, как компилятор его увидит.
Таким образом, вращение (СИНИЙ) работает, потому что вращение (5,5,190) работает. Если вы хотите назначить СИНИЙ переменной, вам фактически нужно назначить ее трем переменным, потому что вращение требует трех независимых переменных, по одной для каждого цветового канала. Зачем вообще назначать переменную? Почему бы не использовать определение?
Прочитайте введение в c или c ++ (это разные языки) и узнайте, что вы делаете. Суетиться вслепую, как будто вы делаете, вряд ли даст хорошие результаты.
Других решений пока нет …