我正在尝试使用定时器重复更改PWM输出,以便在亮度变化时实现平滑过渡。我在尝试编译代码时不断收到此错误:
/Users/jt/Documents/Arduino/libraries/SingleColorLight/SingleColorLight.cpp:在构造函数' CSingleColorLight :: CSingleColorLight(int)': /Users/jt/Documents/Arduino/libraries/SingleColorLight/SingleColorLight.cpp:13:58:错误:无法转换' CSingleColorLight :: DimmerCallback'来自type' void(CSingleColorLight ::)(void *)'输入' void()(void )' ets_timer_setfn(& Dimmer,this-> DimmerCallback,NULL);
这是我的代码:
class CSingleColorLight {
private:
int pin;
int intensitySetPoint;
int intensityActual;
int percentageBuffer;
ETSTimer Dimmer;
int dimmerCount;
public:
CSingleColorLight(int _pin);
bool setIntensity(int _intensity);
int getIntensity();
bool getStatus(void);
bool setStatus(bool _status);
void DimmerCallback(void*);
};
并在cpp文件中:
void CSingleColorLight::DimmerCallback(void*) {
if(dimmerCount>0){
dimmerCount--;
intensityActual++;
} else if(dimmerCount<0){
dimmerCount++;
intensityActual--;
} else {
ets_timer_disarm(&Dimmer);
}
analogWrite(pin, percentageToTime[intensityActual]);
return;
}
它要求指针,对吗?知道如何解决这个问题吗? 非常感谢!
答案 0 :(得分:0)
如果你想让DimmerCallback获取一个void *参数,那么你需要命名它,比如
void CSingleColorLight::DimmerCallback(void* x)
但您没有在代码中使用void *。看起来你应该摆脱它,所以它将是
void CSingleColorLight::DimmerCallback()
int cpp和
void DimmerCallback();
标题中的。
void *参数是一个可以指向任何数据类型的指针,它与void不同,只是没有参数。