#Define , RGB colors for NeoPIxel



我在粒子光子上玩NeoPixel。已经运行了示例代码,该代码通过不同的颜色旋转新像素。然而,对于如何扩展它有点困惑,特别是它定义新像素颜色的方式。

草图定义颜色是这样

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

并调用以下函数 以这种方式旋转

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 以及如何在整个草图中使用它

谢谢

您应该查找定义语句实际上是什么。 预处理器将在编译器看到源文件中的字符 5,5,190 之前将其替换为 BLUE。

因此,spin(BLUE( 工作,因为 spin(5,5,190( 工作。如果要将 BLUE 分配给一个变量,实际上必须将其分配给三个变量,因为自旋需要三个自变量,每个颜色通道一个。为什么还要赋值给变量呢?为什么不使用定义?

阅读 c 或 c++(它们是不同的语言(的介绍并了解您在做什么。 像你现在这样盲目地闲逛不太可能产生好的结果。

最新更新