Junichi Katsu
/
LineTracer_test
ライントレーサーのテストプログラムです。 コンパイルのみ 動作未チェック
main.cpp
- Committer:
- jksoft
- Date:
- 2012-04-01
- Revision:
- 0:72366f00d54c
File content as of revision 0:72366f00d54c:
// Line Trace Test Program // By JKSOFT // Line Sensor Port // Left Center Right // p16 p17 p18 p19 p20 // 0x01 0x02 0x04 0x08 0x10 // Motor Port // Left motor1(M1) p5,p6 Forward = 0x01 Back = 0x02 // Right motor2(M2) p7,p8 Forward = 0x01 Back = 0x02 // Servo Port // p21 // Center 0.5 // Left Max 0.0 // Right Max 1.0 #include "mbed.h" #include "Servo.h" #define SENSOR_TH 0x8000 #define SENSOR_NUM 5 #define SERVO_CENTER 0.5 #define LEFT2_SENSOR_ON 0x01 #define LEFT1_SENSOR_ON 0x02 #define CENTER_SENSOR_ON 0x04 #define RIGHT1_SENSOR_ON 0x08 #define RIGHT2_SENSOR_ON 0x10 Servo myservo(p21); BusOut motor1(p5, p6); BusOut motor2(p7, p8); AnalogIn sensor1(p16); AnalogIn sensor2(p17); AnalogIn sensor3(p18); AnalogIn sensor4(p19); AnalogIn sensor5(p20); int LineCheck() { int ret = 0; int in[SENSOR_NUM] = { sensor1.read_u16(), sensor2.read_u16(), sensor3.read_u16(), sensor4.read_u16(), sensor5.read_u16() }; for(int i = 0 ; i < SENSOR_NUM ; i++ ) { if( in[i] > SENSOR_TH ) { ret |= 1 << i; } } return(ret); } int main() { // Motor Stop motor1 = 0; motor2 = 0; //Servo Center myservo = SERVO_CENTER; while(1) { int value = LineCheck(); switch(value) { case LEFT2_SENSOR_ON: // Left Outside myservo = 0.2; break; case LEFT1_SENSOR_ON: // Left Inside myservo = 0.4; break; case CENTER_SENSOR_ON: // Center myservo = 0.5; break; case RIGHT1_SENSOR_ON: // Right Inside myservo = 0.6; break; case RIGHT2_SENSOR_ON: // Right Outside myservo = 0.8; break; default: myservo = 0.5; break; } // Forward motor1 = 0x01; motor2 = 0x01; } }