所以我一直在为Arduino编写一些库,以减少我一直在研究的相当大的草图。到目前为止,一切都在工作,除了在我的一个类的构造函数中。我用它来初始化任何变量,引脚模式和附加中断。 当我尝试附加中断时出现问题,我在我的类中声明和定义了函数,以及我是否在setup()块中的Arduino草图中附加它们,或者如果我在构造函数的库中执行它,我收到这个错误:
类型'void(RotaryEncoders ::)()'的参数与'void(*)()'不匹配
代码的基本结构如下:
RotaryEncoders::RotaryEncoders() {
//Initialise some variables
//Set up some pin modes
attachInterrupt(2, doRedEncoder, CHANGE);
}
void RotaryEncoders::doRedEncoder() {
//Some code, blah blah blah
}
我认为当你纯粹在Arduino IDE中执行此操作时,这些工具会对内存中的函数执行某些操作以使其正常工作。我认为解决方案很简单,但我不明白:S 谢谢:D
答案 0 :(得分:1)
指向成员函数的函数指针是个坏主意,因为这些函数通常由对象使用。
解决问题的两种方法:
Solution1:有一个外部函数(非成员函数)(常规C风格函数)为你做事。
解决方案2: Look at this
祝你好运。