0
我在添加attachInterrupt在我創建的庫中時遇到問題。我研究了很多,我注意到這是一個常見的錯誤,但不太明白我找到的答案。庫中的AttachInterrupt
有問題的錯誤是這樣的:
sketch_nov04a.ino: In function 'void setup()':
sketch_nov04a:10: error: argument of type 'void (Teste::)()' does not match 'void (*)()'
我的圖書館如下:
Teste.h
#ifndef TESTE_H
#define TESTE_H
#include <Arduino.h>
class Teste
{
public:
volatile long lastWindIRQ;
volatile byte windClicks;
void wspeedIRQ();
};
#endif
Teste.cpp
#include "Teste.h"
void Teste::wspeedIRQ()
{
if (millis() - this.lastWindIRQ > 10)
{
this.lastWindIRQ = millis();
this.windClicks++;
}
}
我實現
#include <Teste.h>
Teste teste;
void setup()
{
Serial.begin(9600);
pinMode(2, INPUT);
digitalWrite(2, HIGH);
attachInterrupt(0, teste.wspeedIRQ, FALLING);
}
void loop()
{
Serial.println(teste.windClicks);
delay(3000);
}
解決這一問題可以在這裏找到 - >https://arduino.stackexchange.com/a/4865/3837
需要國家你找到問題的答案,你不明白。 – 2014-11-04 01:45:42
你有多少經驗寫圖書館?看起來你沒有構造函數,也沒有調用該對象。錯誤是因爲您的代碼中不存在「windClicks」。通常你會有一個全局變量,你可以通過將指針傳入你的庫來進行操作。然後從中斷調用庫中的方法。 – djUniversal 2014-11-04 17:30:37
@djUniversal它看起來不像OP打算使用一個對象。該方法被聲明爲「靜態」。 (如果OP不在定義中使用'static',編譯器可能會抱怨。)否則,庫看起來很好。 – UncleO 2014-11-04 23:55:20