Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: RemoteIR TextLCD
Diff: main.cpp
- Revision:
- 51:1baf4407f384
- Parent:
- 50:ee78382fd399
- Child:
- 52:c868403753e8
--- a/main.cpp Wed Sep 02 06:14:47 2020 +0000
+++ b/main.cpp Wed Sep 02 06:37:27 2020 +0000
@@ -44,6 +44,7 @@
#define VF 1
#define REVERSE 0.5
+#define MBED02 0.719 //Mbed02号機の左右のモーター速度比(R:L = 1: 0.719)
#define MBED04 0.781 //Mbed04号機の左右のモーター速度比(R:L = 1: 0.781)
#define MBED05 0.953 //Mbed05号機の左右のモーター速度比(R:L = 1: 0.953)
#define MBED07 1
@@ -105,10 +106,9 @@
I2C i2c_lcd(p28,p27); // LCD(tx, rx)
/* 変数宣言 */
-int mode; // 操作モード
+MODE mode; // 操作モード
int run; // 走行状態
-int beforeRun = STOP; // 前回の走行状態
-int beforeMode; // 前回のモード
+MODE beforeMode; // 前回のモード
int flag_sp = 0; // スピード変化フラグ
Timer viewTimer; // スピ―ド変更時に3秒計測タイマー
@@ -326,6 +326,9 @@
void motor(/*void const *argument*/){
while(1){
/* 走行状態の場合分け */
+ if(mode != LINE_TRACE){ // スピード変更フラグが2より大きいなら
+ flag_sp %= 3; // スピード変更フラグ調整
+ }
switch(run){
/* 前進 */
case ADVANCE:
@@ -375,9 +378,9 @@
motorL2 = 0.36;
break;
}
- if(flag_sp > VERYFAST){ // スピード変更フラグが2より大きいなら
+ /*if(flag_sp > VERYFAST){ // スピード変更フラグが2より大きいなら
flag_sp %= 3; // スピード変更フラグ調整
- }
+ }*/
ThisThread::sleep_for(3); // 30ms待つ
}
}
@@ -419,39 +422,32 @@
switch(sensArray[sensD]){
case 1:
flag_sp = flag_sp % 3 + 6;
- beforeRun = run;
run = ADVANCE; // 高速で前進
break;
case 2:
flag_sp = flag_sp % 3 + 3;
- beforeRun = run;
// run = RIGHT; // 低速で右折
run = LT_R; // 低速で右折
break;
case 3:
flag_sp = flag_sp % 3 + 3;
- beforeRun = run;
// run = LEFT; // 低速で左折
run = LT_L; // 低速で左折
break;
case 4:
flag_sp = flag_sp % 3;
- beforeRun = run;
run = RIGHT; // 中速で右折
break;
case 5:
flag_sp = flag_sp % 3;
- beforeRun = run;
run = LEFT; // 中速で左折
break;
case 6:
flag_sp = flag_sp % 3 + 6;
- beforeRun = run;
run = RIGHT; // 高速で右折
break;
case 7:
flag_sp = flag_sp % 3 + 6;
- beforeRun = run;
run = LEFT; // 高速で左折
break;
default:
@@ -782,7 +778,9 @@
/* バッテリー残量更新関数 */
void bChange(){
//pc.printf(" bChange1\r\n");
- b = (int)(((battery.read() * 3.3 - MIN_V)/0.67)*10+0.5)*10;
+ if(run == STOP){
+ b = (int)((((battery.read() * 3.3 - MIN_V)/0.67)*10+0.5)*10);
+ }
if(b <= 0){ // バッテリー残量0%なら全ての機能停止
b = 0;
//lcd.setBacklight(TextLCD::LightOff);
@@ -1216,6 +1214,7 @@
//*-*-*-5("+++++++++++++++++succed rec begin+++++++++++++++++++++\r\n");
//*-*-*-5("%s",webdata);
//*-*-*-5("+++++++++++++++++succed rec end+++++++++++++++++++++\r\n");
+ beforeMode = mode;
if( strstr(webdata, "Normal") != NULL ) {
//*-*-*-5("++++++++++++++++++Normal++++++++++++++++++++");
mode = SPEED; // スピードモード
@@ -1234,8 +1233,6 @@
flag_sp = 1;
display(); // ディスプレイ表示
mode = beforeMode; // 現在のモードに前回のモードを設定
- }else{
- beforeMode = mode;
}
if( strstr(webdata, "GO") != NULL ) {
//*-*-*-5("+++++++++++++++++前進+++++++++++++++++++++\r\n");
@@ -1440,7 +1437,7 @@
lcd.setBacklight(TextLCD::LightOn); // バックライトON
lcd.setAddress(0,1);
lcd.printf("Mode:SetUp");
- display(); // ディスプレイ表示
+ //display(); // ディスプレイ表示
while(1){
bChange(); // バッテリー残量更新