【Arduino】クラスを作ってみる1
今回は、ストップウォッチをクラス化したものを作ることにしました。
自分自身まだまだ初歩的なことしかできませんが、ちょっとずつやっていきたいと思いますので、よろしくお願いします。
製作環境
・Visual Studio Code
・Windows10
・Arduino Nano
※Visual Studio CodeでArduino環境構築は割愛させていただきます。
1.ストップウォッチの細分化
まずは、作りたいものをクラス化するにあたって構成(部品)を考えていきたいと思います。
・時間の計測
・ボタンの入力
・ラップタイムの記録
・ディスプレイに表示
ざっくりとこんな感じ?
2.時間の計測を作ってみる
時間の計測ということで、クラス名を「Timer」で作ってみる。
Timer.h ↓
#define Timer_h
//時間管理クラス
class Timer
{
public:
Timer();
~Timer();
void Start(void);
float Stop(void);
typedef memory(){
uint32_t a
}m_memory
private:
uint32_t m_startTime;
uint32_t m_stopTime;
};
#endif
Timer.cpp ↓
#include "Timer.h"
Timer::Timer()
{
m_startTime = 0;
m_stopTime = 0;
}
Timer::~Timer(){}
/**
* 計測を開始する
**/
void Timer::Start(void)
{
m_startTime = millis(); //開始したときの時間を格納
Serial.print("start :"); //コンソールに出力
Serial.print(m_startTime);
Serial.println("ms");
}
/**
* 計測終了時間を返す
**/
float Timer::Stop(void)
{
float res = 0;
//計測が開始されているとき、計測終了時間を格納
if (m_startTime != 0){
m_stopTime = millis(); //終了時間を格納
Serial.print("stop :"); //コンソールに出力
Serial.print(m_stopTime);
Serial.println("ms");
res = (m_stopTime - m_startTime)/1000; //計測時間の計算
m_startTime = 0; //開始時間の初期化
}
return res;
}
stopwatch.ino ↓
シリアルコマンドで '1' を送ると計測開始・'2' を送ると計測終了
#include "Timer.h"
#include <SoftwareSerial.h>
Timer time; //Timerクラスのインスタンスを作成
// String g_str = "";
void setup() {
Serial.begin(115200); //通信速度を初期化
Serial.println("USING Timer class"); //デバッグよう出力
}
void loop() {
char key = '\0';
float measurval = 0, raptime = 0;
//データがあった時だけ、処理を行う
if (Serial.available()) { //受信データはあるか?
key = Serial.read(); //1文字だけ読み込む
Serial.write(key); //1文字だけ送信。受信データをそのまま送り返す。
Serial.print("\n"); //改行
}
//keyの中身で条件分岐
switch (key)
{
case '1':
time.Start(); //スタート
break;
case '2':
measurval = time.Stop(); //ストップ
Serial.print(measurval); //計測時間をコンソール出力
Serial.println("s");
break;
default:
break;
}
key = 0; //格納した1文字を削除
}
3.出力結果
[Info] Opened the serial port - COM4
USING Timer class
1
start :25172ms
2
stop :30885ms
5.00s
4.まとめ
今回はここまでにして、「時間の計測」をクラス化したが見ての通り小数点以下は”.00”で表示されてしまうので改善点として、別の投稿で取り組みたいと思います。
次はラップタイムを記憶できるようにしてみる。
つたない投稿内容になってしましましたが、
最後まで見ていただき、誠にありがとうございました。
この記事が気に入ったらサポートをしてみませんか?