Arduinoでのクラス作成
・質問の内容
Arduinoでクラスを作成して、LEDアレイを用いた演出に使うコードを組んでいたのですが、以下のエラーメッセージが発生しました。
有識者の方教えていただきたいです。
発生している問題・エラーメッセージ
base.h:9:5:warning: extra qualification 'Kikn::' on member 'Kikn' [-fpermissive] Kikn::Kikn(int _colorcode[]) base.h:12:3:error: 'Serial' was not declared in this scope Serial.begin( 9600 ); base.h:19:18: error: 'OUTPUT' was not declared in this scope pinMode(pin, OUTPUT); base.h:19:5: error: 'pinMode' was not declared in this scope pinMode(pin, OUTPUT); base.h:20:23: error: 'LOW' was not declared in this scope digitalWrite(pin, LOW); base.h:20:5: error: 'digitalWrite' was not declared in this scope digitalWrite(pin, LOW); base.h:28:11: error: 'A3' was not declared in this scope pinMode(A3, OUTPUT); base.h:28:15: error: 'OUTPUT' was not declared in this scope pinMode(A3, OUTPUT); base.h:28:3: error: 'pinMode' was not declared in this scope pinMode(A3, OUTPUT); base.h:30:11: error: 'A4' was not declared in this scope pinMode(A4, OUTPUT); base.h:32:11: error: 'A5' was not declared in this scope pinMode(A5, OUTPUT); base.cpp:5:7: error: 'Serial' was not declared in this scope if (Serial.available() > 0) base.cpp:12:22: error: 'random' was not declared in this scope pindata = (int)random(2, 12); base.cpp:15:36: error: expected primary-expression before ')' token for (int rgb = 0; rgb < 3; rgb + ) base.cpp:20:48: error: 'LOW' was not declared in this scope if (cPin == rgb) digitalWrite(cPin + 17, LOW); base.cpp:20:24: error: 'digitalWrite' was not declared in this scope if (cPin == rgb) digitalWrite(cPin + 17, LOW); base.cpp:20:24: error: 'digitalWrite' was not declared in this scope if (cPin == rgb) digitalWrite(cPin + 17, LOW); base.cpp:22:36: error: 'HIGH' was not declared in this scope else digitalWrite(cPin + 17, HIGH); base.cpp:22:12: error: 'digitalWrite' was not declared in this scope else digitalWrite(cPin + 17, HIGH); base.cpp:26:17: error: 'pindata' was not declared in this scope digitalWrite( pindata, HIGH ); base.cpp:26:26: error: 'HIGH' was not declared in this scope digitalWrite( pindata, HIGH ); base.cpp:26:3: error: 'digitalWrite' was not declared in this scope digitalWrite( pindata, HIGH ); base.cpp:28:3: error: 'delay' was not declared in this scope delay(5); base.cpp:28:3: note: suggested alternative: 'display' delay(5); base.h:9:5: warning: extra qualification 'Kikn::' on member 'Kikn' [-fpermissive] Kikn::Kikn(int _colorcode[]) last_mission:9:17: error: expected primary-expression before ']' token Kikn kikn(color[]) = new Kikn; last_mission:9:20: error: expected ',' or ';' before '=' token Kikn kikn(color[]) = new Kikn; exit status 1 'Serial' was not declared in this scope
該当のソースコード
Arduino
<lastmission.ino> #include "Arduino.h" #include "base.h" int color[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; Kikn kikn(color[]) = new Kikn; void setup() { } void loop() { kikn.display(); } <base.cpp> #include "base.h" void Kikn::display(void) { if (Serial.available() > 0) { int pindata = Serial.read(); //数値データを読み込む pindata = pindata % 12; if (pindata == 0 || pindata == 1) { pindata = (int)random(2, 12); } } for (int rgb = 0; rgb < 3; rgb + ) { for (int cPin = 0; cPin < 3; cPin++) { //カソードの出力状況 if (cPin == rgb) digitalWrite(cPin + 17, LOW); //光る1つの条件クリア else digitalWrite(cPin + 17, HIGH); } } digitalWrite( pindata, HIGH ); //アノードの出力状態・光る2つ目の条件クリア delay(5); } <base.h> #ifndef base_h #define base_h class Kikn { public: void display(); private: int colorcode[10]; Kikn::Kikn(int _colorcode[]) //インスタンス化(1度だけ通す) { Serial.begin( 9600 ); for (int x = 0; x < 10; x++) { colorcode[x] = _colorcode[x]; } for (int pin = 2; pin <= 11; pin++) { pinMode(pin, OUTPUT); digitalWrite(pin, LOW); //アノード初期化 } /* 以下3行で出力ピンを設定※アナログピンをデジタルとして使用 A3=17,A4=18,A5=19として設定することも可能 カソード */ pinMode(A3, OUTPUT); //赤・17 pinMode(A4, OUTPUT); //青・18 pinMode(A5, OUTPUT); //緑・19 } /* 1または10番ピンをGND、11~20番ピンに電圧を印加すると赤色に光ります。 また、同様に2または9番ピンをGNDで青色、3または8番ピンをGNDで緑色に光ります。 */ }; #endif //piblicが終わった後にセミコロンをつける
試したこと
エラーを検索にかけて修正していました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
まだ回答がついていません
会員登録して回答してみよう