C++ 创建头文件并使用FastLED库中的CRGB LED阵列时出错

C++ 创建头文件并使用FastLED库中的CRGB LED阵列时出错,c++,pointers,arduino,header-files,fastled,C++,Pointers,Arduino,Header Files,Fastled,我正在使用可寻址LED进行Arduino项目,我正在使用FastLED.h库 为了简化我的程序,我想创建一个名为LedsHorloge.h的库,从中调用函数Jauge(int-tour,int-numbereds,int-brightness,CRGB*ledTable)来点亮我的LED条 我是C++新手, 在Arduino IDE中,我得到的错误是: D:\Programmation\Arduino\libraries\libraries\JaugeLED/LedsHorloge.h:16:8

我正在使用可寻址LED进行Arduino项目,我正在使用FastLED.h库

为了简化我的程序,我想创建一个名为LedsHorloge.h的库,从中调用函数
Jauge(int-tour,int-numbereds,int-brightness,CRGB*ledTable)
来点亮我的LED条

我是C++新手,

在Arduino IDE中,我得到的错误是:

D:\Programmation\Arduino\libraries\libraries\JaugeLED/LedsHorloge.h:16:8: note: void LedsJauge::Jauge(int, int, int, CRGB*)

   void Jauge(int tour, int numberLeds, int brightness, CRGB* ledTable);

        ^

D:\Programmation\Arduino\libraries\libraries\JaugeLED/LedsHorloge.h:16:8: note:   no known conversion for argument 4 from 'CRGB (*)[32]' to 'CRGB*'

exit status 1
no matching function for call to 'LedsJauge::Jauge(int&, int, int, CRGB (*)[32])'
在Arduino IDE中运行此代码时发生此错误:

#include <LedsHorloge.h>
#include "FastLED.h"

#define LED_PIN     6
#define NUMBER_LEDS    32
#define BRIGHTNESS  100
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB
#define VITESSE_JAUGE 150 // Delay milliseconds

CRGB leds[NUMBER_LEDS];

#define UPDATES_PER_SECOND 100

int tour = 0 ; // Compte le nombre de tour dans le loop
int pinButton = 8; // Pin qui déclenche la fonction "Jauge"
boolean flag = false ;

LedsJauge jauge(LED_PIN); // This is the object I create 

void setup() {

    delay( 3000 ); // power-up safety delay
    FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUMBER_LEDS).setCorrection( TypicalLEDStrip ); // Initialisation de la bande de leds

    Serial.begin(9600);
    FastLED.clear(); // Fonction d'initialisation, encore mal connue

    pinMode(pinButton, INPUT_PULLUP) ;
    InitBandeLeds(); // Eteint toutes les leds si elles sont allumées

    FastLED.show();  // Applique la valeur HSV définie dans la variable "leds"
}

void loop() { 

  // tant que le bouton n'est pas activé, le drapeau reste false
  if ( digitalRead(pinButton) == LOW ){
    flag = true ;
  }


  // lorsque le drapeau devient true on rentre dans la condition
  if (flag){
      if ( tour < NUMBER_LEDS ){  tour += 1;  } // A chaque loop la variable est incrémenté de 1

      jauge.Jauge(tour, NUMBER_LEDS, BRIGHTNESS, &leds); // ERROR COMES FROM THIS LINE
      FastLED.show(); 
      FastLED.delay(1000 / UPDATES_PER_SECOND);
      delay(VITESSE_JAUGE); // régle la vitesse d'allumage des leds
  }

}


// Fonction qui éteint le bandeau de leds
void InitBandeLeds(){
    for( int i = 0; i < NUMBER_LEDS; i++) {
        if ( tour - i >0 ){
          leds[i] = CHSV( 0, 0, 0) ;
        }
    }  
}
#包括
#包括“FastLED.h”
#定义LED_引脚6
#定义数量\u指示灯32
#定义亮度100
#定义LED_类型WS2812B
#定义颜色顺序GRB
#定义VITESSE_JAUGE 150//延迟毫秒
CRGB发光二极管[发光二极管数量];
#定义每秒更新次数100次
int-tour=0;//环道旅游区全称
int pinButton=8;//请用“Jauge”粉刷一下
布尔标志=假;
LedsJauge jauge(LED_引脚);//这是我创建的对象
无效设置(){
延时(3000);//上电安全延时
FastLED.addLED(LED,数字指示灯)。setCorrection(TypicalLEDStrip);//初始化LED
Serial.begin(9600);
fasted.clear();//函数d'初始化,encore mal connue
pinMode(pinButton,INPUT_PULLUP);
initbandeles();//Eteint是一种诱惑
FastLED.show();//贴花灯HSV définie灯可变“LED”
}
void loop(){
//这是一种行为,这是虚假的
如果(数字读取(pinButton)=低){
flag=true;
}
//lorsque le drapeau Deviant true on rentre dans la条件
国际单项体育联合会(旗){
if(tour0){
led[i]=CHSV(0,0,0);
}
}  
}
这是我的头球,叫莱德肖洛奇

#ifndef LedsHorloge_h
#define LedsHorloge_h

#include <Arduino.h>
#include "FastLED.h"

class LedsJauge
{
 public:
 LedsJauge(int pin);
 // A chaque tour une led supplémentaire de la jauge est allumée
 void Jauge(int tour, int numberLeds, int brightness, CRGB* ledTable);
 private:
 int _pin;
};


#endif
\ifndef LedsHorloge\u h
#定义LedsHorloge_h
#包括
#包括“FastLED.h”
LedsJauge类
{
公众:
LedsJauge(内部引脚);
//一次由联合国牵头的查克之旅
无效行程(整数行程、整数编号、整数亮度、CRGB*LED表格);
私人:
int_引脚;
};
#恩迪夫
这是我的源代码LedsHorloge.cpp

#include <Arduino.h>
#include "FastLED.h"
#include "LedsHorloge.h"

LedsJauge::LedsJauge(int pin)
{
 _pin = pin;
}

void LedsJauge::Jauge(int tour, int numberLeds, int brightness, CRGB* ledTable)
{
    for( int i = 0; i < numberLeds; i++) {
        if ( tour - i >0 ){
          ledTable[i] = CHSV( 100, 187, brightness) ;
        }
    }

 return;
}
#包括
#包括“FastLED.h”
#包括“LedsHorloge.h”
LedsJauge::LedsJauge(内部引脚)
{
_引脚=引脚;
}
void ledshague::Jauge(int-tour、int-numberled、int-brightness、CRGB*ledTable)
{
for(int i=0;i0){
LED表[i]=CHSV(100187,亮度);
}
}
返回;
}

我不知道如何在对象
crgbled[NUMBER_led]上创建指针

我从另一个论坛得到答案,解决方案是替换:

jauge.jauge(巡更、LED数量、亮度和LED)

jauge.jauge(巡更、LED数量、亮度、LED)

然而,我真的不明白为什么我不能使用变量的内存值,而我在函数Jauge的声明中使用指针,让我们看看:

void LedsJauge::Jauge(int tour, int numberLeds, int brightness, CRGB* ledTable)
那是因为

    CRGB leds[NUMBER_LEDS];

LED已经是一个指针;只是它是一个常量指针。i、 e.不能更改变量的地址。

请注意,
LED
不是指针,而是数组。但是,数组在函数调用中用作参数时会衰减为指针(指向它们的第一个元素)。Yes同意您的观点。