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


単体テスト仕様書にそってテストを行います
前回のつづきです
前回の記事
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(); // 関数呼び出し
//

② 温度設定モードでのLCD出力
void loop() {
// TEST
state = 1; // 状態
current_temp = 25; // 現在温度
target_temp = 26; // 設定温度
mode = 'C'; // 冷暖房
fan_speed = 'W'; // 風量
display_lcd(); // 関数呼び出し
//

③ 冷暖房設定モードでのLCD出力
void loop() {
// TEST
state = 2; // 状態
current_temp = 25; // 現在温度
target_temp = 26; // 設定温度
mode = 'H'; // 冷暖房
fan_speed = 'W'; // 風量
display_lcd(); // 関数呼び出し
//
