個人的にプログラミング経験がすっきりせず、Arduinoはあまり好きではありません。しかし最近Arduinoを使う機会がもう一度ありました。

気乗りはしませんでしたが、適当に時間をつぶして終わるよりは、せっかくやるなら何か新しいことを学んでいこうと思い、オブジェクト指向設計に挑戦しました。ArduinoはC++をベースに動作しますが、PythonやC#とは異なる面があり少し馴染みがなかったですが、それでもちゃんと動作する様子まで確認できて充実感があります。もし後日C++を使うことがあれば参考になれば良いです。

サンプルコード

#include "Arduino.h"

class MainFunctions
{
  public:
    AddFiveHundreadWon(int Money);
    AddOneHundreadWon(int Money);
    AddFiftyWon(int Money);
};
#include "Arduino.h"
#include "MainFunctions.h"

int MainFunctions::AddFiftyWon(int Money)
{
  Money += 50;
  return Money;
}

int MainFunctions::AddOneHundreadWon(int Money)
{
  Money += 100;
  return Money;
}

int MainFunctions::AddFiveHundreadWon(int Money)
{
  Money += 500;
  return Money;
}
void setup()
{
    /* ... */
}

void loop()
{
    /* ... */
    Money = MainFunctions.AddFiveHundreadWon(Money);
    Money = MainFunctions.AddOneHundreadWon(Money);
    Money = MainFunctions.AddFiftyWon(Money);
    /* ... */
}

簡単な金額を追加する機能のコードを個別に分割して実装した例です。クラスの宣言部であるMainFunctions.hでメソッドを宣言し、MainFunctions.cppでは宣言されたメソッドを定義する役割を、Arduino_OOP.inoでは定義されたメソッドを呼び出す役割を担うように作成しました。

結果的に正常に動作します。それぞれの関数は呼び出されるたびにAddFiveHundreadWon()では500ウォン、AddOneHundreadWon()では100ウォン、AddFiftyWon()では50ウォンが加算されます。