ETrobocon2017 - 片山研究所モデルベース開発推進事業部
UserInterface.cpp
[詳解]
1 
7 #include "UserInterface.h"
8 
10  char firstCodeText[32];
11  int digit = 0;
12  bool isChangedFirstCode = false;
13 
14  // 初期位置コードを入力してください
15  msg_f( "Please set first code", 4 );
16 
17  // 初期位置コードの初期値と操作している桁数の初期位置を表示する
18  sprintf( firstCodeText, "%05ld", firstCode.getFirstCode() );
19  msg_f( firstCodeText, 5 );
20  digit = firstCode.getDigit();
21  msg_f( getCurrentDigitText( digit ), 6 );
22 
23  ev3_speaker_set_volume( 20 );
24  ev3_speaker_play_tone( 200, 500 );
25 
26  // 初期位置コードを入力
27  while( 1 ) {
28  // ENTERボタンが押されたらループを抜ける
29  if( ev3_button_is_pressed( ENTER_BUTTON ) ) {
30  isChangedFirstCode = true;
31  break;
32  }
33 
34 
35  if( ev3_button_is_pressed( UP_BUTTON ) ) {
36  firstCode.upDigit( digit );
37  isChangedFirstCode = true;
38  }
39  if( ev3_button_is_pressed( DOWN_BUTTON ) ) {
40  firstCode.downDigit( digit );
41  isChangedFirstCode = true;
42  }
43  if( ev3_button_is_pressed( RIGHT_BUTTON ) ) {
44  firstCode.changeRightDigit();
45  isChangedFirstCode = true;
46  }
47  if( ev3_button_is_pressed( LEFT_BUTTON ) ) {
48  firstCode.changeLeftDigit();
49  isChangedFirstCode = true;
50  }
51 
52  digit = firstCode.getDigit();
53 
54  // ボタンが押された時に限り画面表示を変更する
55  if( isChangedFirstCode ) {
56  ev3_speaker_play_tone( 1000, 100 );
57  sprintf( firstCodeText, "%05ld", firstCode.getFirstCode() );
58  msg_f( firstCodeText, 5 );
59  msg_f( getCurrentDigitText( digit ), 6 );
60  tslp_tsk( 500 );
61  }
62 
63  isChangedFirstCode = false;
64  tslp_tsk( 4 );
65  }
66 
67  // 終了
68  sprintf( firstCodeText, "Input first code for <%05ld>.", firstCode.getFirstCode() );
69  msg_f( firstCodeText, 4 );
70  ev3_speaker_play_tone( 1500, 50 );
71  tslp_tsk( 100 );
72  ev3_speaker_play_tone( 1500, 50 );
73 }
74 
76  return firstCode.getFirstCode();
77 }
78 
79 char* UserInterface::getCurrentDigitText( int8_t currentDigit ) {
80  static char text[ 32 ];
81 
82  if( currentDigit == 1 ) {
83  sprintf( text, " -" );
84  } else if( currentDigit == 2 ) {
85  sprintf( text, " - " );
86  } else if( currentDigit == 3 ) {
87  sprintf( text, " - " );
88  } else if( currentDigit == 4 ) {
89  sprintf( text, " - " );
90  } else if( currentDigit == 5 ) {
91  sprintf( text, "- " );
92 
93  } else {
94  // もし1桁から5桁以外を選択している場合
95  sprintf( text, "-----" );
96  }
97 
98  return text;
99 }
100 
void upDigit(int8_t)
Definition: FirstCode.cpp:19
void changeRightDigit()
Definition: FirstCode.cpp:55
void changeLeftDigit()
Definition: FirstCode.cpp:63
int32_t getFirstCode()
Definition: FirstCode.cpp:39
void msg_f(const char *str, int32_t line)
Definition: util.cpp:17
走行体が走り出す前にユーザが入力するインターフェースを提供するクラス
void inputFirstCode()
void downDigit(int8_t)
Definition: FirstCode.cpp:29
int8_t getDigit()
Definition: FirstCode.cpp:51
int32_t getFirstCode()