ピン番号を設定すると,自動でピン変化割り込みを設定し,
センサーの状態(High/Low)を常に監視できるようにしたいのですがうまくいきません
<LimitSensor.h>
C++
1class clLimitSensor {// 2public: 3 int pin; 4 int HL_On;//リミットセンサに接触している時High/Lowどちらか(NOスイッチ,NCスイッチのどちらか) 5 bool flg_On; 6 7 clLimitSensor(int pin0, int HL_On0) { 8 HL_On = HL_On0; 9 pin = pin0; 10 pinMode(pin, INPUT_PULLUP); 11 12 if (HL_On == digitalRead(pin)) { 13 flg_On = true; 14 }else { 15 flg_On = false; 16 } 17 attachInterrupt(digitalPinToInterrupt(pin), interrupt, CHANGE); 18 } 19 void interrupt() { 20 //if (HL_On == digitalRead(pin)) { 21 // flg_On = true; 22 //}else { 23 // flg_On = false; 24 //} 25 flg_On = !flg_On; 26 } 27 28};
<main側>
C++
1~省略~ 2clLimitSensor LimitSensor[3][2]={ 3 {clLimitSensor(42,LOW),clLimitSensor(48,LOW)}, 4 {clLimitSensor(44,LOW),clLimitSensor(50,LOW)}, 5 {clLimitSensor(46,LOW),clLimitSensor(52,LOW)} 6}; 7~省略~
コンパイルすると
「cannot convert 'clLimitSensor::interrupt' from type 'void (clLimitSensor::)()' to type 'void (*)()'」
と出ます.
関数ポインタに静的でない関数が渡せないという事だと思うのですが,何か解決策はありますか?
よろしくお願いします.
・チャタリング対策などは後々追加する予定です
・使用デバイス:Arduino Due
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 11:49
2018/08/18 19:42
2018/08/19 13:14 編集
2018/08/19 13:34