![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a
Dependencies: mbed ikarashiMDC PS3
main.cpp
- Committer:
- aiueo700A
- Date:
- 2019-03-07
- Revision:
- 0:193dcda90d39
File content as of revision 0:193dcda90d39:
#include"mbed.h" #include"ikarashiMDC.h" #include"PS3.h" #define PI 3.14159265 Serial serial(PC_6,PC_7); DigitalOut serialcontrol(D2); ikarashiMDC ikarashi[] { ikarashiMDC(&serialcontrol,2,0,SM,&serial), ikarashiMDC(&serialcontrol,2,1,SM,&serial), ikarashiMDC(&serialcontrol,2,2,SM,&serial), ikarashiMDC(&serialcontrol,2,3,SM,&serial), ikarashiMDC(&serialcontrol,1,0,SM,&serial) }; PS3 ps3(PC_10,PC_11); Serial pc(USBTX,USBRX,115200); double way(double x,double y,double direction) { double atanval; atanval = atan2(y,x); return sin(atanval - direction); } int main() { serial.baud(115200); ikarashi[0].braking = true; int b[12],stick[4],trigger[2],neutral[4],count = 0; double X,Y,acc[5]; /*ジョイスティック ニュートラル設定*/ do{ for(int i = 0;i < 4;i++) { neutral[i] = ps3.getStick(i); pc.printf("%4d",neutral[i]); } count++; }while(count <= 115200); for(int i = 0;i < 4;i++) { neutral[i] = ps3.getStick(i); pc.printf("%4d",neutral[i]); } while(1){ /*ボタン0=上 1=下 2=左 3=右 4=L1 5=R1 6=△ 7=✖ 8=🔲 9=◯ 10=L3 11=R3*/ for(int i=0;i < 12;i++) { b[i] = ps3.getButton(i); pc.printf("%d",b[i]); } /*ジョイスティック*/ for(int i = 0;i < 4;i++){ stick[i] = ps3.getStick(i); pc.printf("%4d\r\n",stick[i]); } for(int i = 0;i < 2;i++) { trigger[i] = ps3.getTrigger(i); pc.printf("%4d\r\n",trigger[i]); } X = stick[0] - neutral[0]; Y = neutral[1] - stick[1]; if( abs(X) <= 20 && abs(Y) <= 20){ acc[0] = 0; acc[1] = 0; acc[2] = 0; }else { acc[0] = way(X,Y,PI/6); acc[1] = way(X,Y,PI*3/2); acc[2] = way(X,Y,PI/5/6); } if(b[4] == 1 && abs(X) <= 20 && abs(Y) <= 20){ acc[0] = 1; acc[1] = 1; acc[2] = 1; } if(b[5] == 1 && abs(X) <= 20 && abs(Y) <= 20){ acc[0] = -1; acc[1] = -1; acc[2] = -1; } if(b[7] == 1){ acc[0] = 0; acc[1] = 0; acc[2] = 0; } if(trigger[0] == 0 && trigger[1] == 0) { acc[3] = 0; } if(trigger[0] >= 1 && trigger[1] == 0) { acc[3] = 0.4; } if(trigger[0] == 0 && trigger[1] >= 1) { acc[3] = -0.4; } if(trigger[0] >= 1 && trigger[1] >= 1) { acc[3] = 0; } ikarashi[0].setSpeed(acc[0]); ikarashi[1].setSpeed(acc[1]); ikarashi[2].setSpeed(acc[2]); ikarashi[3].setSpeed(acc[3]); for(int i = 0;i < 4;i++) { pc.printf("%f\r\n",acc[i]); } } }