我在我的代码中使用类Ticker,如下所示,名为HookNinja:
void HookNinja::pulser(float period, float onTime) {
_ticker1.attach(period, HookNinja::pulseUp, onTime);
}
void HookNinja::pulseUp(float onTime) {
digitalWrite(2, LOW);
_ticker2.attach(onTime, HookNinja::pulseDown);
}
void HookNinja::pulseDown() {
digitalWrite(2, HIGH);
_ticker2.detach();
}
根据Ticker文档,第二个参数是一个函数,但是一个常规函数,我的是在一个类中,每次我尝试编译时都得到:
error: no matching function for call to 'Ticker::attach
(float&, <unresolved overloaded function type>, float&)'
这种情况发生在here和here,但从这些答案中我无法理解我应该在代码中做些什么来修复它。
注意:_ticker1和2在我的头文件中定义。
答案 0 :(得分:1)
我怀疑这可能是定义顺序的问题:首先使用pulseUp()
然后定义它;首先使用pulseDown()
,然后定义它。
我的建议:尝试颠倒顺序:首先定义pulseDown()
,然后定义pulseUp()
,最后定义pulser()
void HookNinja::pulseDown() {
digitalWrite(2, HIGH);
_ticker2.detach();
}
void HookNinja::pulseUp(float onTime) {
digitalWrite(2, LOW);
_ticker2.attach(onTime, HookNinja::pulseDown);
}
void HookNinja::pulser(float period, float onTime) {
_ticker1.attach(period, HookNinja::pulseUp, onTime);
}
p.s:抱歉我的英语不好