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
1<lastmission.ino> 2#include "Arduino.h" 3#include "base.h" 4 5int color[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; 6 7Kikn kikn(color[]) = new Kikn; 8 9 10void setup() { 11 12} 13 14void loop() { 15 kikn.display(); 16} 17<base.cpp> 18#include "base.h" 19 20void Kikn::display(void) 21{ 22 if (Serial.available() > 0) 23 { 24 int pindata = Serial.read(); 25 //数値データを読み込む 26 pindata = pindata % 12; 27 if (pindata == 0 || pindata == 1) 28 { 29 pindata = (int)random(2, 12); 30 } 31 } 32 for (int rgb = 0; rgb < 3; rgb + ) 33 { 34 for (int cPin = 0; cPin < 3; cPin++) 35 { 36 //カソードの出力状況 37 if (cPin == rgb) digitalWrite(cPin + 17, LOW); 38 //光る1つの条件クリア 39 else digitalWrite(cPin + 17, HIGH); 40 } 41 } 42 43 digitalWrite( pindata, HIGH ); 44 //アノードの出力状態・光る2つ目の条件クリア 45 delay(5); 46} 47 48<base.h> 49#ifndef base_h 50#define base_h 51class Kikn 52{ 53 public: 54 void display(); 55 private: 56 int colorcode[10]; 57 Kikn::Kikn(int _colorcode[]) 58 //インスタンス化(1度だけ通す) 59{ 60 Serial.begin( 9600 ); 61 for (int x = 0; x < 10; x++) 62 { 63 colorcode[x] = _colorcode[x]; 64 } 65 for (int pin = 2; pin <= 11; pin++) 66 { 67 pinMode(pin, OUTPUT); 68 digitalWrite(pin, LOW); 69 //アノード初期化 70 } 71 /* 72 以下3行で出力ピンを設定※アナログピンをデジタルとして使用 73 A3=17,A4=18,A5=19として設定することも可能 74 カソード 75 */ 76 pinMode(A3, OUTPUT); 77 //赤・17 78 pinMode(A4, OUTPUT); 79 //青・18 80 pinMode(A5, OUTPUT); 81 //緑・19 82} 83 84/* 85 1または10番ピンをGND、11~20番ピンに電圧を印加すると赤色に光ります。 86 また、同様に2または9番ピンをGNDで青色、3または8番ピンをGNDで緑色に光ります。 87*/ 88 89}; 90#endif 91//piblicが終わった後にセミコロンをつける
試したこと
エラーを検索にかけて修正していました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/09 05:47
2022/01/09 06:29
2022/01/09 07:00
2022/01/09 07:20 編集
2022/01/09 07:45