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: mbed
Fork of F3RC_syudou_master_3 by
Revision 26:91dd637de4d4, committed 2017-09-14
- Comitter:
- yuto17320508
- Date:
- Thu Sep 14 01:20:12 2017 +0000
- Parent:
- 25:d5588a50f069
- Commit message:
- a
Changed in this revision
| User.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/User.cpp Fri Aug 25 12:23:18 2017 +0000
+++ b/User.cpp Thu Sep 14 01:20:12 2017 +0000
@@ -31,29 +31,35 @@
double fai=60;//φ
//個体差で出力調整
-double power_f=0.2;
-double power_l=0.2;
-double power_r=0.2;
+double power_f=0.32;
+double power_l=0.32;
+double power_r=0.32;
double M1;
double M2;
double M3;
+double accel=1.3;
//ジョイスティックの中心座標
double center=127;
-
//ジョイスティック閾値
double delta=90;
double bound_p=center+delta;
double bound_m=center-delta;
+//回転の比
+ //移動中の回転
+double roll_spd=0.4;
+ //横移動中の回転
+double roll_spd2=0.1;
+ //横移動のスピード
+double yoko_spd=0.9;
-//回転の比
-double roll_spd=0.5;
//モーターの動作
void motor_act()
{
+ //絶対値をつける関数
if(M1 >=0) {
motor_f_1=M1;
motor_f_2=0;
@@ -75,24 +81,20 @@
motor_r_1=0;
motor_r_2=-M3;
}
-
}
//ジョイスティック入力値の偏角
double sita;
//関数代入用の角度調整
double sita_2;
-
void UserLoopSetting()
{
-
motor_f_1.period_us(100);
motor_f_2.period_us(100);
motor_l_1.period_us(100);
motor_l_2.period_us(100);
motor_r_1.period_us(100);
motor_r_2.period_us(100);
-
}
void UserLoop(char n,const u8* data)
@@ -118,41 +120,38 @@
ButtonState = ((ps3report*)(data + 1))->ButtonState;
}
//ここより下にプログラムを書く
- //spi通信用プログラム
-
+ //BUS用プログラム
int flag=0;
num=0;
-
-
- if((ButtonState >> BUTTONUP)&1 == 1) {//対応するボタンを書く(今回上ボタン
+ if((ButtonState >> BUTTONTRIANGEL)&1 == 1) {//対応するボタンを書く
num = 1;
flag=flag+1;
}
- if((ButtonState >> BUTTONDOWN)&1 == 1) { //対応するボタンを書く(今回下ボタン
+ if((ButtonState >> BUTTONCROSS)&1 == 1) { //対応するボタンを書く
num = 2;
flag=flag+1;
}
- if((ButtonState >> BUTTONL1)&1 == 1) { //対応するボタンを書く(今回L1ボタン
+ if((ButtonState >> BUTTONR1)&1 == 1) { //対応するボタンを書く
num = 3;
flag=flag+1;
}
- if((ButtonState >> BUTTONL2)&1 == 1) { //対応するボタンを書く(今回L2ボタン
+ if((ButtonState >> BUTTONR2)&1 == 1) { //対応するボタンを書く
num = 4;
flag=flag+1;
}
- if((ButtonState >> BUTTONTRIANGEL)&1 == 1) { //対応するボタンを書く(今回△ボタン
+ if((ButtonState >> BUTTONUP)&1 == 1) { //対応するボタンを書く
num = 5;
flag=flag+1;
}
- if((ButtonState >> BUTTONCROSS)&1 == 1) { //対応するボタンを書く(今回×ボタン
+ if((ButtonState >> BUTTONDOWN)&1 == 1) { //対応するボタンを書く
num = 6;
flag=flag+1;
}
- if((ButtonState >> BUTTONR1)&1 == 1) { //対応するボタンを書く(今回R1ボタン
+ if((ButtonState >> BUTTONL1)&1 == 1) { //対応するボタンを書く
num = 7;
flag=flag+1;
}
- if((ButtonState >> BUTTONR2)&1 == 1) { //対応するボタンを書く(今回R2ボタン
+ if((ButtonState >> BUTTONL2)&1 == 1) { //対応するボタンを書く
num = 8;
flag=flag+1;
}
@@ -162,73 +161,79 @@
out=num;
printf("%d\r\n",num);
//オムニホイールのプログラム
+
+ if((ButtonState >> BUTTONRANALOG)&1 == 1) {//押し込みで速度変化
+ roll_spd=0.8;
+ } else {
+ roll_spd=0.4;
+ }
if(LSX>=bound_m && LSX<=bound_p && LSY>=bound_m && LSY<=bound_p) {
M1=0;
M2=0;
M3=0;
- if(RSX>=bound_p && RSX<=255) {
+ if(RSX>=bound_p && RSX<=255) {//右スティック右
M1=power_f*roll_spd;
M2=power_l*roll_spd;
M3=power_r*roll_spd;
- } else if(RSX>=0 && RSX<=bound_m) {
+ } else if(RSX>=0 && RSX<=bound_m) {//右スティック左
M1=-1.0*power_f*roll_spd;
M2=-1.0*power_l*roll_spd;
M3=-1.0*power_r*roll_spd;
}
-
- motor_act();
+ sita=0;
- sita=0;
- } else {
+ } else {//左スティック全方向
sita = -1.0*(atan2((double)LSY-center,(double)LSX-center))*180/Pi;
sita_2=90-sita;
M1=sin((sita_2-(fai+0))*Pi/180)*power_f;
M2=sin((sita_2-(fai+240))*Pi/180)*power_l;
M3=sin((sita_2-(fai+120))*Pi/180)*power_r;
- motor_act();
+ if(RSX>=bound_p && RSX<=255) {//進行中の右スティック右
+ M1=M1+power_f*roll_spd;
+ M2=M2+power_l*roll_spd;
+ M3=M3+power_r*roll_spd;
+ } else if(RSX>=0 && RSX<=bound_m) {//進行中の右スティック左
+ M1=M1+-1.0*power_f*roll_spd;
+ M2=M2+-1.0*power_l*roll_spd;
+ M3=M3+-1.0*power_r*roll_spd;
+ }
}
-//真っすぐだけのプログラム(いらない)
-
- /*else if(LSX==255) {
- sita = 0;
- sita_2=90-sita;
- M1=sin((sita_2-fai)*Pi/180)*power_f;
- M2=sin((sita_2-fai+240)*Pi/180)*power_l;
- M3=sin((sita_2-fai+120)*Pi/180)*power_r;
- motor_act();
-
- } else if(LSY==255) {
- sita = -90;
- sita_2=90-sita;
- M1=sin((sita_2-fai)*Pi/180)*power_f;
- M2=sin((sita_2-fai+240)*Pi/180)*power_l;
- M3=sin((sita_2-fai+120)*Pi/180)*power_r;
- motor_act();
-
- } else if(LSX==0) {
- sita = 180;
- sita_2=90-sita;
- M1=sin((sita_2-fai)*Pi/180)*power_f;
- M2=sin((sita_2-fai+240)*Pi/180)*power_l;
- M3=sin((sita_2-fai+120)*Pi/180)*power_r;
- motor_act();
-
- } else if(LSY==0) {
- sita = 90;
- sita_2=90-sita;
- M1=sin((sita_2-fai)*Pi/180)*power_f;
- M2=sin((sita_2-fai+240)*Pi/180)*power_l;
- M3=sin((sita_2-fai+120)*Pi/180)*power_r;
- motor_act();
- } */
+ //真横移動
+ if((ButtonState >> BUTTONLEFT)&1 == 1) { //十字キー左
+ sita = 180;
+ sita_2=90-sita;
+ M1=sin((sita_2-(fai+0))*Pi/180)*power_f*yoko_spd;
+ M2=sin((sita_2-(fai+240))*Pi/180)*power_l*yoko_spd;
+ M3=sin((sita_2-(fai+120))*Pi/180)*power_r*yoko_spd;
+ if(RSX>=bound_p && RSX<=255) {//横移動中の右スティック右
+ M1=M1+power_f*roll_spd2;
+ M2=M2+power_l*roll_spd2;
+ M3=M3+power_r*roll_spd2;
+ } else if(RSX>=0 && RSX<=bound_m) {//横移動中の右スティック左
+ M1=M1+-1.0*power_f*roll_spd2;
+ M2=M2+-1.0*power_l*roll_spd2;
+ M3=M3+-1.0*power_r*roll_spd2;
+ }
+ }
+ if((ButtonState >> BUTTONRIGHT)&1 == 1) { //十字キー右
+ sita = 0;
+ sita_2=90-sita;
+ M1=sin((sita_2-(fai+0))*Pi/180)*power_f*yoko_spd;
+ M2=sin((sita_2-(fai+240))*Pi/180)*power_l*yoko_spd;
+ M3=sin((sita_2-(fai+120))*Pi/180)*power_r*yoko_spd;
+ if(RSX>=bound_p && RSX<=255) {//横移動中の右スティック右
+ M1=M1+power_f*roll_spd2;
+ M2=M2+power_l*roll_spd2;
+ M3=M3+power_r*roll_spd2;
+ } else if(RSX>=0 && RSX<=bound_m) {//横移動中の右スティック左
+ M1=M1+-1.0*power_f*roll_spd2;
+ M2=M2+-1.0*power_l*roll_spd2;
+ M3=M3+-1.0*power_r*roll_spd2;
+ }
+ }
+ motor_act();
-
-
-
+ printf("motor_f:%.4f\t\motor_l:%.4f\t\motor_r:%.4f\t\sita:%f\r\n",M1,M2,M3,sita);
- printf("motor_f_1:%.4f\t\motor_l_1:%.4f\t\motor_r_1:%.4f\t\sita:%f\r\n",M1,M2,M3,sita);
-
-
-
-}
\ No newline at end of file
+}
