見出し画像

ArduinoとSTM32マイコンをつないでマイコンシステム開発をしてみる その26 ~実装⑤~

 マイコンシステム開発の要件定義から総合テストまでの工程をたどってみます。
 題材としては、空調管理システムにします。
 機材はいま手元にあるArduino1台とSTM32マイコン1台を使います。

Arduino UNO
STM32

実装の続きです

前回の実装


システム構成

下記の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に変わりました

シリアルモニタの出力

switch_handler() 関数の実装完了です

次の実装へと進みます


いいなと思ったら応援しよう!