带有多个Neopixels的Arduino草图(功能采用不同的NeoPixels)
Arduino Sketch with multiple NeoPixels (function taking different NeoPixels)
我正在为arduino建立均衡器,因此我在C中编码,我有以下问题,这肯定很容易解决,但是我找不到该解决方案,因为我现在还没有用C代码太多。所以这是我想做的:
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(21, LEFT_BAND_1, NEO_GRB + NEO_KHZ800);
...
Adafruit_NeoPixel strip14 = Adafruit_NeoPixel(21, RIGHT_BAND_7, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strips[14] = {strip1,strip2,strip3,strip4,strip5,strip6,strip7,strip8,strip9,strip10,strip11,strip12,strip13,strip14};
现在,我有一个函数,可以采用以下参数:
void set_band_ledx(Adafruit_NeoPixel stripx,uint32_t color, float value,float value_old) {...}
我想这样使用这样的功能:
for(int i = 0;i<1;i++){
set_band_ledx(strips[i],strip[i].Color(c1, c2, c3), value_l[i],value_l_old[i]);
}
该功能本身有效,如果我仅将其用于一个LED带,我想问题是关于指针的。该功能根本无法正常工作,我无法设法使其正常工作。如果我没有条带数组进行测试,则整个prorgram可以正常工作。
那么,我在哪里以及如何使用指针?感谢提前的帮助!
执行此操作
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(21, LEFT_BAND_1, NEO_GRB + NEO_KHZ800);
...
Adafruit_NeoPixel strip14 = Adafruit_NeoPixel(21, RIGHT_BAND_7, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strips[14] = {strip1,strip2,strip3,strip4,strip5,strip6,strip7,strip8,strip9,strip10,strip11,strip12,strip13,strip14};
您占据了2 * 14 = 28
adafruit_neopixel 的内存等效,而不是所需的14
。
这会更好:
Adafruit_NeoPixel strips[14] = {
Adafruit_NeoPixel(21, LEFT_BAND_1, NEO_GRB + NEO_KHZ800),
...
Adafruit_NeoPixel(21, RIGHT_BAND_7, NEO_GRB + NEO_KHZ800)
}
而不是通过值传递 stripx
void set_band_ledx(Adafruit_NeoPixel stripx, uint32_t color, float value, float value_old) {...}
您应该通过参考
将其传递void set_band_ledx(Adafruit_NeoPixel &stripx, uint32_t color, float value, float value_old) {...}
另外,似乎没有任何理由将uint32_t color
作为单独的参数传递,因为显然它存储在stripx
实例中:
set_band_ledx(strips[i],strip[i].Color(c1, c2, c3), value_l[i],value_l_old[i]);
(尽管我可能在此不看到其余代码的情况下错了。)
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 功能原型的目的
- 带有多个Neopixels的Arduino草图(功能采用不同的NeoPixels)