c++ - #Define , NeoPIxel 的 RGB 颜色

标签 c++ c photon

我正在使用 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/

相关文章:

c++ - 尝试将观察者注册到模板主题类时出现编译错误

c++ - 没有匹配的成员函数调用 'insert'

objective-c - .m 文件中的 C 函数是否比 .c 文件中的慢?

linux - Eclipse DevStyle 主题

c# - Unity Build错误::audioinaec中的属性application @ allowBackups = false:与另一个值冲突

c++ - 在 Qt OpenGL 中制作移动的二维对象

C++ 控制台不显示菜单

c - 我的 uvlib 默认循环意外退出 - 为什么?

c - C中的四维整数数组

unity3d - Visual Studio Code 1.50.1 缺少 Photon Pun 程序集引用