ArduinoとSTM32マイコンをつないでマイコンシステム開発をしてみる その26 ~実装⑤~
マイコンシステム開発の要件定義から総合テストまでの工程をたどってみます。
題材としては、空調管理システムにします。
機材はいま手元にあるArduino1台とSTM32マイコン1台を使います。
実装の続きです
前回の実装
システム構成
下記の3つのシステムから構成されています
・気温データ送信ユニット (実装完了)
・アクチュエータ (実装完了)
・空調管理システム
1. read_temperature()関数 (実装完了)
2.display_lcd() 関数 (実装完了)
今回は空調管理システムの実装の続きです
内部設計を確認します
switch_handler() 関数の実装をおこないます
要件定義から、スイッチ押下時の要件を確認します。
・空調管理システムにはスイッチ1つが接続されている。
・空調管理システムのスイッチ押下で
温度設定モード→冷暖房設定モード→通常モード
と遷移する
押しボタンスイッチを取り付けます
押しボタンスイッチのピンのひとつをArduinoの電源(+)のラインに接続
もうひとつのピンをArduinoの2番ピンに接続し、10kΩの抵抗器を追加で接続して、プルダウン抵抗にしました。
switch_handler() 関数を作成します
volatile int state = 0; // 初期状態(通常モード)
void switch_handler() {
switch (state) {
case 0:
state = 1; // 温度設定モードに遷移
break;
case 1:
state = 2; // 冷暖房設定モードに遷移
break;
case 2:
state = 0; // 通常モードに遷移
break;
}
}
単体テストを行います
volatile int state = 0; // 初期状態(通常モード)
const int pinButton = 2; // 2番ピンにボタンを接続
void switch_handler() {
switch (state) {
case 0:
state = 1; // 温度設定モードに遷移
break;
case 1:
state = 2; // 冷暖房設定モードに遷移
break;
case 2:
state = 0; // 通常モードに遷移
break;
}
}
void setup() {
Serial.begin(9600);
// ボタン割り込みの設定
attachInterrupt(digitalPinToInterrupt(pinButton), switch_handler, RISING);
}
void loop() {
// シリアルモニタに状態を出力
Serial.print("State: ");
Serial.println(state);
delay(1000);
}
ボタンを押すとstatusの値が0から1に変わりました
もう一度ボタンを押すと、statusの値が1から2に変わりました
もう一度ボタンを押すと、statusの値が2から0に変わりました