ETrobocon2017 - 片山研究所モデルベース開発推進事業部
BasicWalker.cpp
[詳解]
1 #include "BasicWalker.h"
2 
4  leftWheel ( PORT_C ), rightWheel ( PORT_B ) {
5  ev3_speaker_set_volume ( 100 ) ;
6 }
7 
8 void BasicWalker::spin ( int32_t forward, bool rotationalDirection, int32_t angle ) {
9  const int8_t reverseValue = rotationalDirection == SPIN_RIGHT
10  ? 1
11  : -1;
12 
13  leftWheel.reset () ;
14  rightWheel.reset () ;
15  tslp_tsk ( 100 ) ;
16  ev3_speaker_play_tone ( NOTE_FS6, 100 ) ;
17  msg_f ( "Spin...", 2 ) ;
18  leftWheel.setBrake ( false ) ;
19  rightWheel.setBrake ( false ) ;
20  leftReverseValue = reverseValue ;
21  rightReverseValue = reverseValue * -1 ;
22  while ( ( leftWheel.getCount () * leftReverseValue ) < ( angle / 0.64 ) ) { // 数値は角度から回転数への変換に必要な値
23  leftWheel.setPWM ( forward * leftReverseValue ) ;
24  rightWheel.setPWM ( forward * rightReverseValue ) ;
25  tslp_tsk ( 2 ) ;
26  }
27  leftWheel.setPWM ( 0 ) ;
28  rightWheel.setPWM ( 0 ) ;
29 }
30 
31 void BasicWalker::goStraight ( int32_t forward, int32_t distance ) {
32  leftWheel.reset () ;
33  rightWheel.reset () ;
34  tslp_tsk ( 100 ) ;
35  ev3_speaker_play_tone ( NOTE_FS6, 100 ) ;
36  msg_f ( "Go...", 3 ) ;
37  leftWheel.setBrake ( false ) ;
38  rightWheel.setBrake ( false ) ;
39  while ( ( ( leftWheel.getCount () + rightWheel.getCount () ) / 2 ) < distance ) {
40  leftWheel.setPWM ( forward ) ;
41  rightWheel.setPWM ( forward ) ;
42  tslp_tsk ( 4 ) ;
43  }
44  leftWheel.setPWM ( 0 ) ;
45  rightWheel.setPWM ( 0 ) ;
46 }
47 
48 void BasicWalker::backStraight ( int32_t forward, int32_t distance ) {
49  leftWheel.reset () ;
50  rightWheel.reset () ;
51  tslp_tsk ( 100 ) ;
52  ev3_speaker_play_tone ( NOTE_FS6, 100 ) ;
53  msg_f ( "Go...", 3 ) ;
54  leftWheel.setBrake ( false ) ;
55  rightWheel.setBrake ( false ) ;
56  while ( ( ( leftWheel.getCount () + rightWheel.getCount () ) / 2 ) > ( -1 * distance ) ) {
57  leftWheel.setPWM ( -1 * forward ) ;
58  rightWheel.setPWM ( -1 * forward ) ;
59  tslp_tsk ( 4 ) ;
60  }
61  leftWheel.setPWM ( 0 ) ;
62  rightWheel.setPWM ( 0 ) ;
63 }
void setPWM(int pwm)
Definition: Motor.cpp:31
void setBrake(bool brake)
Definition: Motor.cpp:47
void backStraight(int32_t, int32_t)
Definition: BasicWalker.cpp:48
void reset(void)
Definition: Motor.h:55
Definition: Port.h:32
Definition: Port.h:33
const bool SPIN_RIGHT
Definition: BasicWalker.h:18
void msg_f(const char *str, int32_t line)
Definition: util.cpp:17
int32_t getCount(void) const
Definition: Motor.h:67
void spin(int32_t, bool, int32_t)
Definition: BasicWalker.cpp:8
void goStraight(int32_t, int32_t)
Definition: BasicWalker.cpp:31