我在粒子光子上玩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
传递编译器,但在函数调用时失败
旋转(浅色)
或旋转(lightcolor1,1,1 1,1,1}
我只是不确定我在这里遗漏了什么,关于#define如何声明const以及如何在整个草图中使用它
谢谢
发布于 2017-07-27 11:00:05
你应该查查define语句到底是什么。在编译器看到源文件之前,预处理器会将源文件中的蓝色替换为字符5、5、190。
因此,自旋(蓝色)起作用是因为自旋(5,5,190)起作用。如果你想将蓝色赋值给一个变量,实际上你必须将它赋值给三个变量,因为spin需要三个独立变量,每个颜色通道一个。为什么还要赋值给一个变量呢?为什么不使用定义呢?
阅读c或c++的介绍(它们是不同的语言),并了解自己在做什么。像你这样盲目地到处打探,不太可能产生好的结果。
https://stackoverflow.com/questions/45340440
复制相似问题