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:
- 49:7224132f4b0e
- Parent:
- 48:3003ea51c619
- Child:
- 50:ee78382fd399
--- a/main.cpp Mon Aug 31 01:22:48 2020 +0000
+++ b/main.cpp Wed Sep 02 05:35:17 2020 +0000
@@ -21,29 +21,53 @@
#define FAST 1 // 速い
#define VERYFAST 2 // とても速い
-#define SLOW 0.8
+
+
+/* // 右回り37.21[s]
+#define S 0.9
+#define VF 1.2
#define REVERSE 0.5
#define MBED04 0.781//Mbed04号機の左右のモーター速度比(R:L = 1: 0.781)
#define MBED05 0.953//Mbed05号機の左右のモーター速度比(R:L = 1: 0.953)
-#define MSR0 0.4
-#define MSR1 0.5
-#define MSR2 0.6
-#define MSR3 MSR0*SLOW
-#define MSR4 MSR1*SLOW
-#define MSR5 MSR2*SLOW
-#define MSR6 0.7
-#define MSR7 0.8
-#define MSR8 0.9
-#define MSL0 MSR0*MBED05
-#define MSL1 MSR1*MBED05
-#define MSL2 MSR2*MBED05
-#define MSL3 MSR3*MBED05
-#define MSL4 MSR4*MBED05
-#define MSL5 MSR5*MBED05
-#define MSL6 MSR6*MBED05
-#define MSL7 MSR7*MBED05
-#define MSL8 MSR8*MBED05
+#define MBED07 1
+// MSR = Motor Speed Right
+// MSL = Motor Speed Left
+#define MSR0 0.5 // 基準速度Normal
+#define MSR1 0.6 // 基準速度Fast
+#define MSR2 0.7 // 基準速度VeryFast
+*/
+
+
+
+#define S 0.9
+#define VF 1
+#define REVERSE 0.5
+
+#define MBED04 0.781 //Mbed04号機の左右のモーター速度比(R:L = 1: 0.781)
+#define MBED05 0.953 //Mbed05号機の左右のモーター速度比(R:L = 1: 0.953)
+#define MBED07 1
+// MSR = Motor Speed Right
+// MSL = Motor Speed Left
+#define MSR0 0.55 // 基準速度Normal
+#define MSR1 0.6 // 基準速度Fast
+#define MSR2 0.65 // 基準速度VeryFast
+
+#define MSR3 MSR0*S // 低速旋回(Normalの時)
+#define MSR4 MSR1*S*S // 低速旋回(Fastの時)
+#define MSR5 MSR2*S*S*S // 低速旋回(VeryFastの時)
+#define MSR6 MSR0*VF // 高速(Normalの時)
+#define MSR7 MSR1*VF // 高速(Fastの時)
+#define MSR8 MSR2*VF // 高速(VeryFastの時)
+#define MSL0 MSR0*MBED07
+#define MSL1 MSR1*MBED07
+#define MSL2 MSR2*MBED07
+#define MSL3 MSR3*MBED07
+#define MSL4 MSR4*MBED07
+#define MSL5 MSR5*MBED07
+#define MSL6 MSR6*MBED07
+#define MSL7 MSR7*MBED07
+#define MSL8 MSR8*MBED07
/* 操作モード定義 */
enum MODE{
@@ -56,6 +80,8 @@
LINE_TRACE, // 6:ライントレース
AVOIDANCE, // 7:障害物回避
SPEED, // 8:スピード制御
+ LT_R, // 9:低速右折(ライントレース時)
+ LT_L // 10:低速左折(ライントレース時)
};
/* ピン配置 */
@@ -111,9 +137,9 @@
int flag_t = 0; // バックライトタイマーフラグ
/* trace用変数 */
-int sensArray[32] = {0,6,2,4,1,2,1,4, // ライントレースセンサパターン
- 3,6,1,6,1,1,1,6, // 0:前回動作継続
- 7,1,7,1,3,1,1,1, // 1:高速前進
+int sensArray[32] = {0,6,2,4,1,4,2,4, // ライントレースセンサパターン
+ 3,4,1,6,3,1,1,6, // 0:前回動作継続
+ 7,1,5,1,5,1,1,1, // 1:高速前進
5,1,7,1,5,1,7,1}; // 2:低速右折
// 3:低速左折
// 4:中速右折
@@ -335,6 +361,20 @@
motorL1 = LOW; // 左前進モーターOFF
motorL2 = LOW; // 左後退モーターOFF
break;
+ /* 低速右折 */
+ case LT_R:
+ motorR1 = motorSpeedR2[flag_sp]; // 右前進モーターON
+ motorR2 = LOW; // 右後退モーターOFF
+ motorL1 = motorSpeedL1[flag_sp]; // 左前進モーターON
+ motorL2 = LOW; // 左後退モーターOFF
+ break;
+ /* 低速左折 */
+ case LT_L:
+ motorR1 = motorSpeedR1[flag_sp]; // 右前進モーターON
+ motorR2 = LOW; // 右後退モーターOFF
+ motorL1 = motorSpeedL2[flag_sp]; // 左前進モーターON
+ motorL2 = LOW; // 左後退モーターOFF
+ break;
}
if(flag_sp > VERYFAST){ // スピード変更フラグが2より大きいなら
flag_sp %= 3; // スピード変更フラグ調整
@@ -353,6 +393,12 @@
}
/* ライントレーススレッド */
+//void trace(){
+// // PID用
+// while(1){
+// ThisThread::sleep_for(3);
+// }
+//}
void trace(){
while(1){
/* 各センサー値読み取り */
@@ -361,7 +407,6 @@
int sensor3 = ss3;
int sensor4 = ss4;
int sensor5 = ss5;
- //pc.printf("%d %d %d %d %d \r\n",sensor1,sensor2,sensor3,sensor4,sensor5);
int sensD = 0;
/* センサー値の決定 */
@@ -381,12 +426,14 @@
case 2:
flag_sp = flag_sp % 3 + 3;
beforeRun = run;
- run = RIGHT; // 低速で右折
+// run = RIGHT; // 低速で右折
+ run = LT_R; // 低速で右折
break;
case 3:
flag_sp = flag_sp % 3 + 3;
beforeRun = run;
- run = LEFT; // 低速で左折
+// run = LEFT; // 低速で左折
+ run = LT_L; // 低速で左折
break;
case 4:
flag_sp = flag_sp % 3;
@@ -786,10 +833,7 @@
esp.attach(&callback);
servreq=0;
}
- run = beforeRun;
ThisThread::sleep_for(100);
- beforeRun = run;
- run = STOP;
}
}
// Static WEB page
@@ -1065,10 +1109,7 @@
//****
//output at command when 2000
if(((i%2047)==0) && (i>0)) {
- run = beforeRun;
ThisThread::sleep_for(100);
- beforeRun = run;
- run = STOP;
sprintf(cmdbuff,"AT+CIPSENDBUF=%d,%d\r\n", linkID, (bufl-2048*(i/2047))>2048?2048:(bufl-2048*(i/2047))); // send IPD link channel and buffer character length.
timeout=600;
getcount=50;
@@ -1131,10 +1172,7 @@
// Reads and processes GET and POST web data
void ReadWebData()
{
- run = beforeRun;
ThisThread::sleep_for(200);
- beforeRun = run;
- run = STOP;
esp.attach(NULL);
ount=0;
DataRX=0;