Лично я не очень люблю 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 вон.