見出し画像

ArduinoとSTM32マイコンをつないでマイコンシステム開発をしてみる その34 ~単体テスト⑤~

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

Arduino UNO
STM32

単体テスト仕様書にそってテストを行います

前回のつづきです

前回の記事


5.display_lcd() のテストケース

正常系

テストケース
#include <SPI.h>
#include <LiquidCrystal.h>
#include "AirConLib5.h"

void display_lcd(){
    // 文字列を格納するバッファ
    char msgbuf[16];
    // 浮動小数点数を文字列に変換
    dtostrf(current_temp, 5, 1, msgbuf);
    // カーソル位置を指定して出力 (1行目)
    lcd.clear();          lcd.print("NOW:");
    lcd.setCursor(4, 0);  lcd.print(msgbuf);     // 現在の気温
    lcd.setCursor(10, 0); lcd.print("OUT :");
    lcd.setCursor(15, 0); lcd.print(fan_speed);  // 風量

    // 浮動小数点数を文字列に変換
    dtostrf(target_temp, 5, 1, msgbuf);
    // カーソル位置を指定して出力 (2行目)
    lcd.setCursor(0, 1);  lcd.print("SET:");
    lcd.setCursor(4, 1);  lcd.print(msgbuf);   // 設定温度
    lcd.setCursor(10, 1); lcd.print("MODE:");
    lcd.setCursor(15, 1); lcd.print(mode);     // 冷暖房モード

    delay(100);
    // 設定箇所点滅 
    switch (state) {
      case 1:   // 温度設定モード
      lcd.setCursor(4, 1);  lcd.print("     ");   
      break; 
      case 2:   // 冷暖房設定モード
      lcd.setCursor(15, 1); lcd.print(" ");    
      break;
    }
    delay(100);
}

void setup() {

    lcd.begin(16, 2); // LCDを16x2モードで初期化
}

void loop() {

  display_lcd();  // 関数呼び出し

}

温度設定モードのときに、設定温度を点滅させる仕様と、
冷暖房モードのときに、モードを点滅させる仕様が
抜けていましたので追記しました。

① 通常モードでのLCD出力

void loop() {
    // TEST
    state = 0;              // 状態
    current_temp = 25;      // 現在温度
    target_temp  = 25;      // 設定温度
    mode =  'C';            // 冷暖房
    fan_speed = 'W';     // 風量
    display_lcd();  // 関数呼び出し
    //
正常に出力 テストOK

② 温度設定モードでのLCD出力

void loop() {
    // TEST
    state = 1;              // 状態
    current_temp = 25;      // 現在温度
    target_temp  = 26;      // 設定温度
    mode =  'C';            // 冷暖房
    fan_speed = 'W';     // 風量
    display_lcd();  // 関数呼び出し
    //
温度設定箇所が点滅 テストOK

③ 冷暖房設定モードでのLCD出力

void loop() {
    // TEST
    state = 2;              // 状態
    current_temp = 25;      // 現在温度
    target_temp  = 26;      // 設定温度
    mode =  'H';            // 冷暖房
    fan_speed = 'W';     // 風量
    display_lcd();  // 関数呼び出し
    //
冷暖房設定箇所が点滅 テストOK

以上で、display_lcd()関数の単体テスト完了です



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