おもちゃラボ

Unityで遊びを作ってます

【Arduino】クラスを作ってオブジェクト指向でプログラムを書く方法

Arduinoでは小さなプロジェクトを作ることが多いですが、少し大きいプロジェクトになると、どうしてもクラスを作りたくなります。

ArduinoはC++で書かれたプログラムをサポートしているので、.inoと同じフォルダにhとcppを入れるだけで動作する・・・はず?と思っていたのですが

xxx.h No such file or directory compilation terminated

と怒られてしまいました。どうやら同じフォルダに入れただけでは、ヘッダファイルを見つけてくれないようです。

Arduinoでクラスを作るために

Arduinoでオブジェクト指向プログラムを書くには、Arduinoのエディタからクラス(h, cpp)を作る必要があります。

クラスを作るにはArduino上部の▼をクリックし、ヘッダファイル名を入力します。同様の手順でcppファイルも作ります。

f:id:nn_hokuson:20170227195428g:plain

今回は次のようなプレイやクラスを作りました。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でクラスを作る方法を紹介しました。