etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
公開メンバ関数 | 全メンバ一覧
UserInterface クラス

走行体が走り出す前にユーザが入力するインターフェースを提供するクラス [詳解]

#include "UserInterface.h"

UserInterface 連携図
Collaboration graph

公開メンバ関数

 UserInterface ()=default
 
 UserInterface (Controller &controller_)
 
void inputFirstCode ()
 
void setBrightness (int8_t &brightness, const char *str)
 
void setBrightnessWithColor (int16_t &brightness, const char *str)
 
int32_t getFirstCode ()
 

詳解

走行体が走り出す前にユーザが入力するインターフェースを提供するクラス

UserInterface.h25 行目に定義があります。

構築子と解体子

UserInterface::UserInterface ( )
default
UserInterface::UserInterface ( Controller controller_)
inlineexplicit

UserInterface.h28 行目に定義があります。

28 : controller(controller_) {}

関数詳解

int32_t UserInterface::getFirstCode ( )

初期位置コードを返す。 FirstCodeクラスに依存する。

戻り値
初期位置コード FirstCodeクラスのgetFirstCodeメンバ関数の値をそのまま返す

UserInterface.cpp121 行目に定義があります。

122 {
123  return firstCode.getFirstCode();
124 }
int32_t getFirstCode()
Definition: FirstCode.cpp:41

呼び出し関係図:

void UserInterface::inputFirstCode ( )

初期位置コードを入力する。 whileループに入っており、ENTERボタンを押すまでループを抜けることはない。 UPボタンとDOWNボタンで数字の大小を選択し、RightボタンとLeftボタンで変更する数字の桁数を選択する。

UserInterface.cpp57 行目に定義があります。

58 {
59  int digit = 0;
60  bool isChangedFirstCode = false;
61 
62  // 初期位置コードを入力してください
63  controller.printDisplay(4, "Please set first code");
64 
65  // 初期位置コードの初期値と操作している桁数の初期位置を表示する
66  controller.printDisplay(5, "%05ld", firstCode.getFirstCode());
67 
68  digit = firstCode.getDigit();
69  controller.printDisplay(6, getCurrentDigitText(digit));
70 
71  controller.speakerSetVolume(20);
72  controller.speakerPlayTone(200, 500);
73 
74  // 初期位置コードを入力
75  while(1) {
76  // ENTERボタンが押されたらループを抜ける
77  if(controller.buttonIsPressedEnter()) {
78  isChangedFirstCode = true;
79  break;
80  }
81 
82  if(controller.buttonIsPressedUp()) {
83  firstCode.upDigit(digit);
84  isChangedFirstCode = true;
85  }
86  if(controller.buttonIsPressedDown()) {
87  firstCode.downDigit(digit);
88  isChangedFirstCode = true;
89  }
90  if(controller.buttonIsPressedRight()) {
91  firstCode.changeRightDigit();
92  isChangedFirstCode = true;
93  }
94  if(controller.buttonIsPressedLeft()) {
95  firstCode.changeLeftDigit();
96  isChangedFirstCode = true;
97  }
98 
99  digit = firstCode.getDigit();
100 
101  // ボタンが押された時に限り画面表示を変更する
102  if(isChangedFirstCode) {
103  controller.speakerPlayTone(1000, 100);
104  controller.printDisplay(5, "%05ld", firstCode.getFirstCode());
105  controller.printDisplay(6, getCurrentDigitText(digit));
106  controller.tslpTsk(500);
107  }
108 
109  isChangedFirstCode = false;
110  controller.tslpTsk(4);
111  }
112 
113  // 終了
114  controller.printDisplay(4, "Input first code for <%05ld>.", firstCode.getFirstCode());
115 
116  controller.speakerPlayTone(1500, 50);
117  controller.tslpTsk(100);
118  controller.speakerPlayTone(1500, 50);
119 }
void speakerPlayTone(uint16_t frequency, int32_t duration)
Definition: Controller.cpp:9
void tslpTsk(int16_t time)
Definition: Controller.cpp:74
void upDigit(int8_t)
Definition: FirstCode.cpp:19
void changeRightDigit()
Definition: FirstCode.cpp:59
void changeLeftDigit()
Definition: FirstCode.cpp:68
int32_t getFirstCode()
Definition: FirstCode.cpp:41
bool buttonIsPressedLeft()
Definition: Controller.cpp:49
bool buttonIsPressedRight()
Definition: Controller.cpp:44
bool buttonIsPressedEnter()
Definition: Controller.cpp:29
bool buttonIsPressedUp()
Definition: Controller.cpp:34
void downDigit(int8_t)
Definition: FirstCode.cpp:30
bool buttonIsPressedDown()
Definition: Controller.cpp:39
int8_t getDigit()
Definition: FirstCode.cpp:54
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79
void speakerSetVolume(uint8_t volume)
Definition: Controller.cpp:4

呼び出し関係図:

void UserInterface::setBrightness ( int8_t &  brightness,
const char *  str 
)

UserInterface.cpp9 行目に定義があります。

10 {
11  controller.tslpTsk(500);
12  while(1) {
13  // ENTERボタンが押されたらループを抜ける
14  if(controller.buttonIsPressedEnter()) {
15  controller.speakerPlayTone(1000, 100);
16  break;
17  }
18  controller.printDisplay(7, "%s LightValue: %d", str, controller.colorSensor.getBrightness());
19  controller.tslpTsk(4);
20  }
21  int16_t mean_brightness = 0;
22  int8_t times = 10;
23  for(int8_t i = 0; i < times; i++) {
24  mean_brightness += controller.colorSensor.getBrightness();
25  controller.tslpTsk(4);
26  }
27  controller.speakerPlayTone(2000, 100);
28  brightness = mean_brightness / times;
29 }
void speakerPlayTone(uint16_t frequency, int32_t duration)
Definition: Controller.cpp:9
void tslpTsk(int16_t time)
Definition: Controller.cpp:74
bool buttonIsPressedEnter()
Definition: Controller.cpp:29
ColorSensor colorSensor
Definition: Controller.h:43
int8_t getBrightness(void) const
Definition: ColorSensor.cpp:34
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79

呼び出し関係図:

被呼び出し関係図:

void UserInterface::setBrightnessWithColor ( int16_t &  brightness,
const char *  str 
)

UserInterface.cpp31 行目に定義があります。

32 {
33  controller.tslpTsk(500);
34 
35  while(1) {
36  // ENTERボタンが押されたらループを抜ける
37  if(controller.buttonIsPressedEnter()) {
38  controller.speakerPlayTone(1000, 100);
39  break;
40  }
41  int16_t luminance = controller.getBrightness();
42  controller.printDisplay(7, "%s LightValue: %d", str, luminance);
43  // sprintf(msg, "RGB R:%3d G:%3d B:%3d", rgb.r, rgb.g, rgb.b);
44  // msg_f(msg, 8);
45  controller.tslpTsk(4);
46  }
47  int16_t mean_brightness = 0;
48  int8_t times = 10;
49  for(int8_t i = 0; i < times; i++) {
50  mean_brightness += controller.getBrightness();
51  controller.tslpTsk(4);
52  }
53  controller.speakerPlayTone(2000, 100);
54  brightness = mean_brightness / times;
55 }
void speakerPlayTone(uint16_t frequency, int32_t duration)
Definition: Controller.cpp:9
void tslpTsk(int16_t time)
Definition: Controller.cpp:74
int16_t getBrightness()
Definition: Controller.cpp:59
bool buttonIsPressedEnter()
Definition: Controller.cpp:29
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79

呼び出し関係図:

被呼び出し関係図:


このクラス詳解は次のファイルから抽出されました: