我正在使用 Particle Photon 上的 NeoPixels。已经运行示例代码,通过不同的颜色旋转 neopixels。然而,对于如何扩展它有点困惑,特别是它定义新像素颜色的方式。
草图是这样定义颜色的
#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
通过了编译器,但是函数调用失败了
自旋(浅色)
或者 自旋(浅色[1,1,1]}
只是不确定关于#define 如何声明 const 以及如何在整个草图中使用它,我在这里遗漏了什么
谢谢
最佳答案
你应该查一下 define 语句到底是什么。预处理器会在编译器看到之前用源文件中的字符 5,5,190 替换 BLUE。
因此,spin(BLUE) 起作用是因为 spin(5,5,190) 起作用。如果要将 BLUE 分配给一个变量,实际上必须将其分配给三个变量,因为自旋需要三个自变量,每个变量对应一个颜色 channel 。为什么还要分配给一个变量呢?为什么不使用定义?
阅读 c 或 c++ 的介绍(它们是不同的语言)并了解您在做什么。像你这样盲目地摸索不太可能产生好的结果。
关于c++ - #Define , NeoPIxel 的 RGB 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340440/