Arduinoでは小さなプロジェクトを作ることが多いですが、少し大きいプロジェクトになると、どうしてもクラスを作りたくなります。
ArduinoはC++で書かれたプログラムをサポートしているので、.inoと同じフォルダにhとcppを入れるだけで動作する・・・はず?と思っていたのですが
xxx.h No such file or directory compilation terminated
と怒られてしまいました。どうやら同じフォルダに入れただけでは、ヘッダファイルを見つけてくれないようです。
Arduinoでクラスを作るために
Arduinoでオブジェクト指向プログラムを書くには、Arduinoのエディタからクラス(h, cpp)を作る必要があります。
クラスを作るにはArduino上部の▼をクリックし、ヘッダファイル名を入力します。同様の手順でcppファイルも作ります。
今回は次のようなプレイやクラスを作りました。C++なのでインクルードガードを書いています。UnityでC#ばっかり書いていると、C++の用語が懐かしく感じますね〜(^^;)
//Player.h #ifndef PLAYER_H_INCLUDE #define PLAYER_H_INCLUDE class Player { public: Player(); private: int m_playerID; }; #endif
Arduinoが用意している関数を使う場合はcppファイルにArduino.hをインクルードしてください。
//Player.cpp #include "Player.h" Player::Player():m_playerID(0) { }
コンパイルすれば、正しくコンパイルできるはずです。
まとめ
LEDを点滅させるだけでオブジェクト指向はメモリの無駄遣いですが、簡単なゲームを作るとなるとそうも言ってられません。オブジェクト指向でクラスを作らないと、変数が散らばって大変なことになります。ということで、今回はArudinoでクラスを作る方法を紹介しました。