質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

受付中

Arduinoのクラス作成の方法を教えていただきたいです

TeTeTeT
TeTeTeT

総合スコア0

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

2回答

0評価

0クリップ

368閲覧

投稿2022/01/09 02:51

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。