etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
UserInterface.cpp
[詳解]
1 
7 #include "UserInterface.h"
8 
9 void UserInterface::setBrightness(int8_t& brightness, const char* str)
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 }
30 
31 void UserInterface::setBrightnessWithColor(int16_t& brightness, const char* str)
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 }
56 
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 }
120 
122 {
123  return firstCode.getFirstCode();
124 }
125 
126 char* UserInterface::getCurrentDigitText(int8_t currentDigit)
127 {
128  static char text[32];
129 
130  if(currentDigit == 1) {
131  sprintf(text, " -");
132  } else if(currentDigit == 2) {
133  sprintf(text, " - ");
134  } else if(currentDigit == 3) {
135  sprintf(text, " - ");
136  } else if(currentDigit == 4) {
137  sprintf(text, " - ");
138  } else if(currentDigit == 5) {
139  sprintf(text, "- ");
140  } else {
141  // もし1桁から5桁以外を選択している場合
142  sprintf(text, "-----");
143  }
144 
145  return text;
146 }
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
int16_t getBrightness()
Definition: Controller.cpp:59
走行体が走り出す前にユーザが入力するインターフェースを提供するクラス
void inputFirstCode()
bool buttonIsPressedEnter()
Definition: Controller.cpp:29
bool buttonIsPressedUp()
Definition: Controller.cpp:34
void downDigit(int8_t)
Definition: FirstCode.cpp:30
void setBrightness(int8_t &brightness, const char *str)
ColorSensor colorSensor
Definition: Controller.h:43
bool buttonIsPressedDown()
Definition: Controller.cpp:39
int8_t getDigit()
Definition: FirstCode.cpp:54
void setBrightnessWithColor(int16_t &brightness, const char *str)
int8_t getBrightness(void) const
Definition: ColorSensor.cpp:34
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79
void speakerSetVolume(uint8_t volume)
Definition: Controller.cpp:4
int32_t getFirstCode()