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:
- 15:d022288aec51
- Parent:
- 14:ab89b6cd9719
- Child:
- 16:05b26003da50
--- a/main.cpp Mon Aug 26 01:39:35 2019 +0000
+++ b/main.cpp Mon Aug 26 02:23:20 2019 +0000
@@ -95,19 +95,19 @@
void init_send(void);
void get_pulses(void);
void print_pulses(void);
-void front(int target);
-void back(int target);
-void right(int target);
-void left(int target);
-void turn_right(int target);
-void turn_left(int target);
+void front(unsigned int target);
+void back(unsigned int target);
+void right(unsigned int target);
+void left(unsigned int target);
+void turn_right(unsigned int target);
+void turn_left(unsigned int target);
+void front_PID(unsigned int target);
+void back_PID(unsigned int target);
+void right_PID(unsigned int target);
+void left_PID(unsigned int target);
+void turn_right_PID(unsigned int target);
+void turn_left_PID(unsigned int target);
void dondonkasoku(void);
-void front_PID(int target);
-void back_PID(int target);
-void right_PID(int target);
-void left_PID(int target);
-void turn_right_PID(int target);
-void turn_left_PID(int target);
int main(void) {
@@ -165,7 +165,7 @@
pc.printf("x1: %d, x2: %d, y1: %d, y2: %d\n\r", x_pulse1, x_pulse2, y_pulse1, y_pulse2);
}
-void front(int target) {
+void front(unsigned int target) {
front_PID(target);
i2c.write(0x10, true_migimae_data, 1, false);
@@ -175,7 +175,7 @@
wait_us(20);
}
-void back(int target) {
+void back(unsigned int target) {
back_PID(target);
i2c.write(0x10, true_migimae_data, 1, false);
@@ -185,7 +185,7 @@
wait_us(20);
}
-void right(int target) {
+void right(unsigned int target) {
right_PID(target);
i2c.write(0x10, true_migimae_data, 1, false);
@@ -195,7 +195,7 @@
wait_us(20);
}
-void left(int target) {
+void left(unsigned int target) {
left_PID(target);
i2c.write(0x10, true_migimae_data, 1, false);
@@ -205,7 +205,7 @@
wait_us(20);
}
-void turn_right(int target) {
+void turn_right(unsigned int target) {
turn_right_PID(target);
i2c.write(0x10, true_migimae_data, 1, false);
@@ -215,7 +215,7 @@
wait_us(20);
}
-void turn_left(int target) {
+void turn_left(unsigned int target) {
turn_left_PID(target);
i2c.write(0x10, true_migimae_data, 1, false);
@@ -225,7 +225,7 @@
wait_us(20);
}
-void front_PID(int target) {
+void front_PID(unsigned int target) {
//センサ出力値の最小、最大(とりあえずint型が持てる範囲に設定)
migimae.setInputLimits(-2147483648, 2147483647);
@@ -300,7 +300,7 @@
}
}
-void back_PID(int target) {
+void back_PID(unsigned int target) {
//センサ出力値の最小、最大(とりあえずint型が持てる範囲に設定)
migimae.setInputLimits(-2147483648, 2147483647);
@@ -310,14 +310,14 @@
//制御量の最小、最大
//逆転(目標に達してない)
- if((abs(y_pulse1) < abs(target)) || (abs(y_pulse2) < abs(target))) {
+ if((abs(y_pulse1) < target) && (abs(y_pulse2) < target)) {
migimae.setOutputLimits(0x00, 0x7B);
migiusiro.setOutputLimits(0x00, 0x7B);
hidarimae.setOutputLimits(0x00, 0x7B);
hidariusiro.setOutputLimits(0x0, 0x7B);
}
//正転(目標より行き過ぎ)
- else if((abs(y_pulse1) > abs(target)) || (abs(y_pulse2) > abs(target))) {
+ else if((abs(y_pulse1) > target) && (abs(y_pulse2) > target)) {
migimae.setOutputLimits(0x84, 0xFF);
migiusiro.setOutputLimits(0x84, 0xFF);
hidarimae.setOutputLimits(0x84, 0xFF);
@@ -336,10 +336,10 @@
hidariusiro.setMode(AUTO_MODE);
//目標値
- migimae.setSetPoint(abs(target));
- migiusiro.setSetPoint(abs(target));
- hidarimae.setSetPoint(abs(target));
- hidariusiro.setSetPoint(abs(target));
+ migimae.setSetPoint(target);
+ migiusiro.setSetPoint(target);
+ hidarimae.setSetPoint(target);
+ hidariusiro.setSetPoint(target);
//センサ出力
migimae.setProcessValue(abs(y_pulse1));
@@ -355,14 +355,14 @@
//制御量をPWM値に変換
//逆転(目標に達してない)
- if((abs(y_pulse1) < abs(target)) || (abs(y_pulse2) < abs(target))) {
+ if((abs(y_pulse1) < target) && (abs(y_pulse2) < target)) {
true_migimae_data[0] = 0x7B - migimae_data[0];
true_migiusiro_data[0] = 0x7B - migiusiro_data[0];
true_hidarimae_data[0] = 0x7B - hidarimae_data[0];
true_hidariusiro_data[0] = 0x7B - hidariusiro_data[0];
}
//正転(目標より行き過ぎ)
- else if((abs(y_pulse1) > abs(target)) || (abs(y_pulse2) > abs(target))) {
+ else if((abs(y_pulse1) > target) && (abs(y_pulse2) > target)) {
true_migimae_data[0] = migimae_data[0];
true_migiusiro_data[0] = migiusiro_data[0];
true_hidarimae_data[0] = hidarimae_data[0];
@@ -375,7 +375,7 @@
}
}
-void right_PID(int target) {
+void right_PID(unsigned int target) {
//センサ出力値の最小、最大
migimae.setInputLimits(-2147483648, 2147483647);
@@ -445,7 +445,7 @@
}
}
-void left_PID(int target) {
+void left_PID(unsigned int target) {
//センサ出力値の最小、最大
migimae.setInputLimits(-2147483648, 2147483647);
@@ -455,14 +455,14 @@
//制御量の最小、最大
//左進(目標まで達していない)
- if((abs(x_pulse1) < abs(target)) && (abs(x_pulse2) < abs(target))) {
+ if((abs(x_pulse1) < target) && (abs(x_pulse2) < target)) {
migimae.setOutputLimits(0x84, 0xFF);
migiusiro.setOutputLimits(0x00, 0x7B);
hidarimae.setOutputLimits(0x00, 0x7B);
hidariusiro.setOutputLimits(0x84, 0xFF);
}
//右進(目標より行き過ぎ)
- else if((abs(x_pulse1) > abs(target)) && (abs(x_pulse2) > abs(target))) {
+ else if((abs(x_pulse1) > target) && (abs(x_pulse2) > target)) {
migimae.setOutputLimits(0x00, 0x7B);
migiusiro.setOutputLimits(0x84, 0xFF);
hidarimae.setOutputLimits(0x84, 0xFF);
@@ -476,10 +476,10 @@
hidariusiro.setMode(AUTO_MODE);
//目標値
- migimae.setSetPoint(abs(target));
- migiusiro.setSetPoint(abs(target));
- hidarimae.setSetPoint(abs(target));
- hidariusiro.setSetPoint(abs(target));
+ migimae.setSetPoint(target);
+ migiusiro.setSetPoint(target);
+ hidarimae.setSetPoint(target);
+ hidariusiro.setSetPoint(target);
//センサ出力
migimae.setProcessValue(abs(x_pulse1));
@@ -495,14 +495,14 @@
//制御量をPWM値に変換
//左進(目標まで達していない)
- if((abs(x_pulse1) < abs(target)) && (abs(x_pulse2) < abs(target))) {
+ if((abs(x_pulse1) < target) && (abs(x_pulse2) < target)) {
true_migimae_data[0] = migimae_data[0];
true_migiusiro_data[0] = 0x7B - migiusiro_data[0];
true_hidarimae_data[0] = 0x7B - hidarimae_data[0];
true_hidariusiro_data[0] = hidariusiro_data[0];
}
//右進(目標より行き過ぎ)
- else if((abs(x_pulse1) > abs(target)) && (abs(x_pulse2) > abs(target))) {
+ else if((abs(x_pulse1) > target) && (abs(x_pulse2) > target)) {
true_migimae_data[0] = 0x7B - migimae_data[0];
true_migiusiro_data[0] = migiusiro_data[0];
true_hidarimae_data[0] = hidarimae_data[0];
@@ -515,7 +515,7 @@
}
}
-void turn_right_PID(int target) {
+void turn_right_PID(unsigned int target) {
//センサ出力値の最小、最大(とりあえずint型が持てる範囲に設定)
migimae.setInputLimits(-2147483648, 2147483647);
@@ -585,7 +585,7 @@
}
}
-void turn_left_PID(int target) {
+void turn_left_PID(unsigned int target) {
//センサ出力値の最小、最大(とりあえずint型が持てる範囲に設定)
migimae.setInputLimits(-2147483648, 2147483647);
@@ -616,10 +616,10 @@
hidariusiro.setMode(AUTO_MODE);
//目標値
- migimae.setSetPoint(abs(target));
- migiusiro.setSetPoint(abs(target));
- hidarimae.setSetPoint(abs(target));
- hidariusiro.setSetPoint(abs(target));
+ migimae.setSetPoint(target);
+ migiusiro.setSetPoint(target);
+ hidarimae.setSetPoint(target);
+ hidariusiro.setSetPoint(target);
//センサ出力
migimae.setProcessValue(abs(x_pulse1));
@@ -635,7 +635,7 @@
//制御量をPWM値に変換
//右旋回(目標に達してない)
- if((abs(x_pulse1) < abs(target)) && (x_pulse2 < target) && (y_pulse1 < target) && (abs(y_pulse2) < abs(target))) {
+ if((abs(x_pulse1) < target) && (x_pulse2 < target) && (y_pulse1 < target) && (abs(y_pulse2) < target)) {
true_migimae_data[0] = migimae_data[0];
true_migiusiro_data[0] = migiusiro_data[0];
true_hidarimae_data[0] = 0x7B - hidarimae_data[0];