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.
Diff: main.cpp
- Revision:
- 2:47477c2b1925
- Parent:
- 1:5c26d3744592
- Child:
- 3:e8c29cd3ca22
diff -r 5c26d3744592 -r 47477c2b1925 main.cpp
--- a/main.cpp Thu Nov 15 06:40:44 2018 +0000
+++ b/main.cpp Fri Nov 16 07:12:57 2018 +0000
@@ -2,12 +2,12 @@
#define KP 5.8 //Pゲイン
#define CHG 1.0 //change_gray用の係数
-#define WHITE_CL 0.88 //初期値
-#define WHITE_CR 0.88 //初期値
-#define GRAY_CL 0.65 //初期値
-#define GRAY_CR 0.65 //初期値
-#define GRAY_L 0.26 //初期値
-#define GRAY_R 0.25 //初期値
+#define WHITE_CL 0.92 //初期値
+#define WHITE_CR 0.70 //初期値
+#define GRAY_CL 0.46 //初期値
+#define GRAY_CR 0.5 //初期値
+#define GRAY_L 0.28 //初期値
+#define GRAY_R 0.28 //初期値
#define DEBUG
@@ -29,10 +29,10 @@
float whiteCL[2], whiteCR[2], grayCL[2], grayCR[2]; //[1]が初期設定の基準値,[0]が変動する閾値
float grayL[2], grayR[2];
-float blackCL = 0.12; //閾値の跡地
+float blackCL = 0.18; //閾値の跡地
float blackCR = 0.3; //↑と同じ
-float whiteL = 0.27, blackL = 0.22;
-float whiteR = 0.28, blackR = 0.22;
+float whiteL = 0.35, blackL = 0.23;
+float whiteR = 0.35, blackR = 0.23;
float sensor[4]; //sensor[0]:sensorL ... sensor[3]:sensorR
float pr, pl;
@@ -50,45 +50,45 @@
}
void go_straight_p(){ //P制御でトレース
- Mrighti = 1;
+ Mrighti = 2;
Mrightp = (KP * pr) * 1.0f;
- Mlefti = 1;
+ Mlefti = 2;
Mleftp = (KP * pl) * 1.0f;
ledR = 1;
ledL = 1;
}
void go_straight_CR(){ //CRのみでトレース
- Mrighti = 1;
+ Mrighti = 2;
Mrightp = (KP * pr + 0.3) * 1.0f;
- Mlefti = 1;
+ Mlefti = 2;
Mleftp = (1.3 - KP * pr) * 1.0f;
ledRR = 0b11;
ledLL = 0b10;
}
void go_straight_CL(){ //CLのみでトレース
- Mrighti = 1;
+ Mrighti = 2;
Mrightp = (1.3 - KP * pl) * 1.0f;
- Mlefti = 1;
+ Mlefti = 2;
Mleftp = (KP * pl + 0.3) * 1.0f;
ledRR = 0b10;
ledLL = 0b11;
}
void turn_right(){
- Mrighti = 2;
+ Mrighti = 1;
Mrightp = 0.05f;
- Mlefti = 1;
+ Mlefti = 2;
Mleftp = 0.1f;
ledR = 1;
ledL = 0;
}
void turn_left(){
- Mrighti = 1;
+ Mrighti = 2;
Mrightp = 0.1f;
- Mlefti = 2;
+ Mlefti = 1;
Mleftp = 0.05f;
ledR = 0;
ledL = 1;
@@ -121,16 +121,16 @@
}
void motor_check(){ //モータドライバの調子の確認用
- Mrighti = 1;
+ Mrighti = 2;
Mrightp = 1.0f;
- Mlefti = 1;
+ Mlefti = 2;
Mleftp = 1.0f;
}
void stop_point(){
- Mrighti = 2;
+ Mrighti = 1;
Mrightp = 1.0f;
- Mlefti = 2;
+ Mlefti = 1;
Mleftp = 1.0f;
wait(0.05);
Mrighti = 0;
@@ -182,7 +182,7 @@
ledC = 1;
set_threshold();
motor_check();
- wait(0.5);
+ wait(5.0);
while(1) {
sensor[0] = sensorL.read();
sensor[1] = sensorCL.read();
@@ -214,4 +214,21 @@
break;
}
}
-}
\ No newline at end of file
+}
+
+/*以下メモ
+・段差
+ if( sensor[0] > 閾値){
+ wait(0.5); //片輪上がるまで待ちたい
+ sensor[2] = read.sensorCR;
+ go_straight_CR();
+ } else if( sensor[3] > 閾値){
+ wait(0.5) //片輪上がるまで待ちたい
+ sensor[1] = read.sensorCL;
+ go_straight_CL();
+ }
+
+・プログラムの切り替え
+回転動作をしたら(完了したら)カウント
+⇒回転を一発で決める必要有
+*/