首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#定义,NeoPIxel的RGB颜色

#定义,NeoPIxel的RGB颜色
EN

Stack Overflow用户
提问于 2017-07-27 10:41:17
回答 1查看 607关注 0票数 0

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

草图这样定义了颜色。

代码语言:javascript
复制
#define BLUE 5,5,190
#define WHITE 150,150,150
#define GREEN 10,180,10

并以这种方式调用下面的函数Spin

代码语言:javascript
复制
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以及如何在整个草图中使用它

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-07-27 11:00:05

你应该查查define语句到底是什么。在编译器看到源文件之前,预处理器会将源文件中的蓝色替换为字符5、5、190。

因此,自旋(蓝色)起作用是因为自旋(5,5,190)起作用。如果你想将蓝色赋值给一个变量,实际上你必须将它赋值给三个变量,因为spin需要三个独立变量,每个颜色通道一个。为什么还要赋值给一个变量呢?为什么不使用定义呢?

阅读c或c++的介绍(它们是不同的语言),并了解自己在做什么。像你这样盲目地到处打探,不太可能产生好的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45340440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档