篤宏 印南 / Mbed 2 deprecated Nucleo_SRC_syudouki

Dependencies:   mbed

Committer:
IAA
Date:
Wed Sep 18 11:42:13 2019 +0000
Revision:
2:39bf6e4bb403
Parent:
1:8d081fda0b16
Child:
3:5cdff884b1de
0918

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IAA 0:7648e025ea67 1 #include "mbed.h"
IAA 0:7648e025ea67 2 #include "DualShock.h"
IAA 0:7648e025ea67 3
IAA 1:8d081fda0b16 4 #define LIFTSPEED 40
IAA 1:8d081fda0b16 5 #define ARMSPEED 40
IAA 1:8d081fda0b16 6 #define SPEED 25
IAA 1:8d081fda0b16 7 #define ROLLSPEED 30
IAA 1:8d081fda0b16 8 #define ARMROLLSPEED 40
IAA 0:7648e025ea67 9
IAA 0:7648e025ea67 10 Serial DS_serial(PC_10, PC_11);
IAA 0:7648e025ea67 11 Serial pc(SERIAL_TX, SERIAL_RX);
IAA 0:7648e025ea67 12
IAA 0:7648e025ea67 13 PwmOut MD1PWM1(PA_0);
IAA 0:7648e025ea67 14 PwmOut MD1PWM2(PA_1);
IAA 1:8d081fda0b16 15 PwmOut MD2PWM1(PA_7);
IAA 0:7648e025ea67 16 PwmOut MD2PWM2(PC_7);
IAA 0:7648e025ea67 17 PwmOut MD3PWM1(PB_15);
IAA 0:7648e025ea67 18 PwmOut MD3PWM2(PB_13);
IAA 0:7648e025ea67 19
IAA 0:7648e025ea67 20 DigitalOut myled(LED1);
IAA 0:7648e025ea67 21 DigitalOut MD1CW1(PB_0);
IAA 0:7648e025ea67 22 DigitalOut MD1CCW1(PC_1);
IAA 0:7648e025ea67 23 DigitalOut MD1DIS1(PA_4);
IAA 0:7648e025ea67 24 DigitalOut MD1CW2(PC_2);
IAA 0:7648e025ea67 25 DigitalOut MD1CCW2(PC_0);
IAA 0:7648e025ea67 26 DigitalOut MD1DIS2(PC_3);
IAA 2:39bf6e4bb403 27
IAA 0:7648e025ea67 28 DigitalOut MD2CW1(PA_8);
IAA 0:7648e025ea67 29 DigitalOut MD2CCW1(PA_10);
IAA 0:7648e025ea67 30 DigitalOut MD2DIS1(PB_10);
IAA 2:39bf6e4bb403 31
IAA 0:7648e025ea67 32 DigitalOut MD2CW2(PB_4);
IAA 0:7648e025ea67 33 DigitalOut MD2CCW2(PB_3);
IAA 0:7648e025ea67 34 DigitalOut MD2DIS2(PB_5);
IAA 0:7648e025ea67 35 DigitalOut MD3CW1(PB_12);
IAA 0:7648e025ea67 36 DigitalOut MD3CCW1(PB_14);
IAA 0:7648e025ea67 37 DigitalOut MD3DIS1(PA_11);
IAA 0:7648e025ea67 38 DigitalOut MD3CW2(PA_12);
IAA 0:7648e025ea67 39 DigitalOut MD3CCW2(PC_4);
IAA 0:7648e025ea67 40 DigitalOut MD3DIS2(PC_5);
IAA 2:39bf6e4bb403 41
IAA 1:8d081fda0b16 42 DigitalOut magnet1(PB_8);
IAA 1:8d081fda0b16 43 DigitalOut magnet2(PB_9);
IAA 1:8d081fda0b16 44 DigitalOut magnet3(PA_5);
IAA 0:7648e025ea67 45
IAA 0:7648e025ea67 46 int main() {
IAA 0:7648e025ea67 47 DS_serial.baud(115200); //通信速度設定
IAA 0:7648e025ea67 48 InitDS(&DS_serial); //受信データ用変数を初期化する
IAA 0:7648e025ea67 49 DS_serial.attach(&getDSdata, Serial::RxIrq); //「受信したら割り込みして」の宣言
IAA 0:7648e025ea67 50 MD1DIS1 = 0;
IAA 0:7648e025ea67 51 MD1DIS2 = 0;
IAA 0:7648e025ea67 52 MD2DIS1 = 0;
IAA 0:7648e025ea67 53 MD2DIS2 = 0;
IAA 0:7648e025ea67 54 MD3DIS1 = 0;
IAA 0:7648e025ea67 55 MD3DIS2 = 0;
IAA 1:8d081fda0b16 56 magnet1 = 0;
IAA 1:8d081fda0b16 57 magnet2 = 0;
IAA 1:8d081fda0b16 58 magnet3 = 0;
IAA 1:8d081fda0b16 59 MD1PWM1.period_us(100);//アーム開閉
IAA 1:8d081fda0b16 60 MD1PWM2.period_us(100);//右前オムニ
IAA 1:8d081fda0b16 61 MD2PWM1.period_us(100);//リフト上下
IAA 1:8d081fda0b16 62 MD2PWM2.period_us(100);//アーム回転
IAA 0:7648e025ea67 63 MD3PWM1.period_us(100);//左前オムニ
IAA 0:7648e025ea67 64 MD3PWM2.period_us(100);//後方オムニ
IAA 0:7648e025ea67 65 int gear;
IAA 0:7648e025ea67 66 gear = 1;
IAA 0:7648e025ea67 67 double root3;
IAA 0:7648e025ea67 68 root3 = 1.732;
IAA 0:7648e025ea67 69 double rightfront;
IAA 0:7648e025ea67 70 double leftfront;
IAA 0:7648e025ea67 71 double back;
IAA 0:7648e025ea67 72 while(1){
IAA 0:7648e025ea67 73 if(hDS.BUTTON.RIGHT == 1){
IAA 1:8d081fda0b16 74 MD1PWM1.pulsewidth_us(ARMSPEED);
IAA 0:7648e025ea67 75 MD1CW1 = 0;
IAA 0:7648e025ea67 76 MD1CCW1 = 1;
IAA 0:7648e025ea67 77 }
IAA 1:8d081fda0b16 78 else if(hDS.BUTTON.LEFT == 1){
IAA 1:8d081fda0b16 79 MD1PWM1.pulsewidth_us(ARMSPEED);
IAA 0:7648e025ea67 80 MD1CW1 = 1;
IAA 0:7648e025ea67 81 MD1CCW1 = 0;
IAA 0:7648e025ea67 82 }
IAA 0:7648e025ea67 83 else{
IAA 0:7648e025ea67 84 MD1PWM1.pulsewidth_us(0);
IAA 0:7648e025ea67 85 MD1CW1 = 0;
IAA 0:7648e025ea67 86 MD1CCW1 = 0;
IAA 1:8d081fda0b16 87 }//アーム開閉
IAA 1:8d081fda0b16 88
IAA 2:39bf6e4bb403 89
IAA 1:8d081fda0b16 90
IAA 1:8d081fda0b16 91
IAA 0:7648e025ea67 92 if(hDS.BUTTON.R2 == 1){
IAA 0:7648e025ea67 93 gear = 2;
IAA 0:7648e025ea67 94 }
IAA 0:7648e025ea67 95 if(hDS.BUTTON.L2 == 1){
IAA 0:7648e025ea67 96 gear = 1;
IAA 0:7648e025ea67 97 }//スピード調整
IAA 0:7648e025ea67 98 if(hDS.BUTTON.L1 == 1){
IAA 1:8d081fda0b16 99 MD1PWM2.pulsewidth_us(gear*ROLLSPEED);
IAA 1:8d081fda0b16 100 MD1CW2 = 1;
IAA 1:8d081fda0b16 101 MD1CCW2 = 0;
IAA 1:8d081fda0b16 102 MD3PWM1.pulsewidth_us(gear*ROLLSPEED);
IAA 1:8d081fda0b16 103 MD3CW1 = 0;
IAA 1:8d081fda0b16 104 MD3CCW1 = 1;
IAA 1:8d081fda0b16 105 MD3PWM2.pulsewidth_us(gear*ROLLSPEED);
IAA 1:8d081fda0b16 106 MD3CW2 = 0;
IAA 1:8d081fda0b16 107 MD3CCW2 = 1;
IAA 1:8d081fda0b16 108 }//右回転
IAA 1:8d081fda0b16 109 else if(hDS.BUTTON.R1 == 1){
IAA 1:8d081fda0b16 110 MD1PWM2.pulsewidth_us(gear*ROLLSPEED);
IAA 1:8d081fda0b16 111 MD1CW2 = 0;
IAA 1:8d081fda0b16 112 MD1CCW2 = 1;
IAA 0:7648e025ea67 113 MD3PWM1.pulsewidth_us(gear*ROLLSPEED);
IAA 0:7648e025ea67 114 MD3CW1 = 1;
IAA 0:7648e025ea67 115 MD3CCW1 = 0;
IAA 0:7648e025ea67 116 MD3PWM2.pulsewidth_us(gear*ROLLSPEED);
IAA 0:7648e025ea67 117 MD3CW2 = 1;
IAA 0:7648e025ea67 118 MD3CCW2 = 0;
IAA 0:7648e025ea67 119 }//左回転
IAA 0:7648e025ea67 120 else{
IAA 0:7648e025ea67 121 rightfront = hDS.ANALOG.LX*-2+hDS.ANALOG.LY*2/root3;
IAA 0:7648e025ea67 122 leftfront = hDS.ANALOG.LX*-2+hDS.ANALOG.LY*-2/root3;
IAA 2:39bf6e4bb403 123 back = hDS.ANALOG.LX*2;
IAA 0:7648e025ea67 124 if(rightfront < 0){
IAA 1:8d081fda0b16 125 MD1PWM2.pulsewidth_us((int)(rightfront*gear*SPEED*-1));
IAA 1:8d081fda0b16 126 MD1CW2 = 0;
IAA 1:8d081fda0b16 127 MD1CCW2 = 1;
IAA 0:7648e025ea67 128 }
IAA 0:7648e025ea67 129 else{
IAA 1:8d081fda0b16 130 MD1PWM2.pulsewidth_us((int)(rightfront*gear*SPEED));
IAA 1:8d081fda0b16 131 MD1CW2 = 1;
IAA 1:8d081fda0b16 132 MD1CCW2 = 0;
IAA 0:7648e025ea67 133 }
IAA 0:7648e025ea67 134 if(leftfront < 0){
IAA 1:8d081fda0b16 135 MD3PWM1.pulsewidth_us((int)(leftfront*gear*SPEED*-1));
IAA 1:8d081fda0b16 136 MD3CW1 = 1;
IAA 1:8d081fda0b16 137 MD3CCW1 = 0;
IAA 0:7648e025ea67 138 }
IAA 0:7648e025ea67 139 else{
IAA 1:8d081fda0b16 140 MD3PWM1.pulsewidth_us((int)(leftfront*gear*SPEED));
IAA 1:8d081fda0b16 141 MD3CW1 = 0;
IAA 1:8d081fda0b16 142 MD3CCW1 = 1;
IAA 0:7648e025ea67 143 }
IAA 0:7648e025ea67 144 if(back < 0){
IAA 1:8d081fda0b16 145 MD3PWM2.pulsewidth_us((int)(back*gear*SPEED*-1));
IAA 1:8d081fda0b16 146 MD3CW2 = 1;
IAA 1:8d081fda0b16 147 MD3CCW2 = 0;
IAA 0:7648e025ea67 148 }
IAA 0:7648e025ea67 149 else{
IAA 1:8d081fda0b16 150 MD3PWM2.pulsewidth_us((int)(back*gear*SPEED));
IAA 1:8d081fda0b16 151 MD3CW2 = 0;
IAA 1:8d081fda0b16 152 MD3CCW2 = 1;
IAA 0:7648e025ea67 153 }//移動
IAA 0:7648e025ea67 154 }
IAA 2:39bf6e4bb403 155
IAA 0:7648e025ea67 156 if(hDS.ANALOG.RY < 0){
IAA 1:8d081fda0b16 157 MD2PWM2.pulsewidth_us(hDS.ANALOG.RY*ARMROLLSPEED*-1);
IAA 1:8d081fda0b16 158 MD2CW2 = 0;
IAA 1:8d081fda0b16 159 MD2CCW2 = 1;
IAA 0:7648e025ea67 160 }
IAA 0:7648e025ea67 161 else{
IAA 1:8d081fda0b16 162 MD2PWM2.pulsewidth_us(hDS.ANALOG.RY*ARMROLLSPEED);
IAA 1:8d081fda0b16 163 MD2CW2 = 1;
IAA 1:8d081fda0b16 164 MD2CCW2 = 0;
IAA 0:7648e025ea67 165 }//アーム回転
IAA 2:39bf6e4bb403 166
IAA 1:8d081fda0b16 167 if(hDS.BUTTON.CIRCLE == 1){
IAA 1:8d081fda0b16 168 magnet1 = 1;
IAA 1:8d081fda0b16 169 magnet2 = 1;
IAA 1:8d081fda0b16 170 magnet3 = 1;
IAA 1:8d081fda0b16 171 }
IAA 1:8d081fda0b16 172 if(hDS.BUTTON.SQUARE == 1){
IAA 1:8d081fda0b16 173 magnet1 = 0;
IAA 1:8d081fda0b16 174 magnet2 = 0;
IAA 1:8d081fda0b16 175 magnet3 = 0;
IAA 1:8d081fda0b16 176 }//電磁石
IAA 2:39bf6e4bb403 177
IAA 2:39bf6e4bb403 178
IAA 2:39bf6e4bb403 179 if(hDS.BUTTON.UP == 1){
IAA 2:39bf6e4bb403 180 MD2PWM1.pulsewidth_us(40);
IAA 2:39bf6e4bb403 181 MD2CW1 = 0;
IAA 2:39bf6e4bb403 182 MD2CCW1 = 1;
IAA 2:39bf6e4bb403 183 }
IAA 2:39bf6e4bb403 184 if(hDS.BUTTON.DOWN == 1){
IAA 2:39bf6e4bb403 185 MD2PWM1.pulsewidth_us(40);
IAA 2:39bf6e4bb403 186 MD2CW1 = 1;
IAA 2:39bf6e4bb403 187 MD2CCW1 = 0;
IAA 2:39bf6e4bb403 188 }
IAA 2:39bf6e4bb403 189 if(hDS.BUTTON.DOWN == 0 && hDS.BUTTON.UP == 0){
IAA 2:39bf6e4bb403 190 MD2PWM1.pulsewidth_us(0);
IAA 2:39bf6e4bb403 191 MD2CW1 = 0;
IAA 2:39bf6e4bb403 192 MD2CCW1 = 0;
IAA 2:39bf6e4bb403 193 }//lift
IAA 2:39bf6e4bb403 194
IAA 2:39bf6e4bb403 195
IAA 0:7648e025ea67 196 if(hDS.BUTTON.CROSS == 1){
IAA 1:8d081fda0b16 197 MD1PWM1.pulsewidth_us(0);
IAA 1:8d081fda0b16 198 MD1CW1 = 0;
IAA 1:8d081fda0b16 199 MD1CCW1 = 0;
IAA 1:8d081fda0b16 200 MD1PWM2.pulsewidth_us(0);
IAA 1:8d081fda0b16 201 MD1CW2 = 0;
IAA 1:8d081fda0b16 202 MD1CCW2 = 0;
IAA 1:8d081fda0b16 203 MD2PWM1.pulsewidth_us(0);
IAA 1:8d081fda0b16 204 MD2CW1 = 0;
IAA 1:8d081fda0b16 205 MD2CCW1 = 0;
IAA 1:8d081fda0b16 206 MD2PWM2.pulsewidth_us(0);
IAA 1:8d081fda0b16 207 MD2CW2 = 0;
IAA 1:8d081fda0b16 208 MD2CCW2 = 0;
IAA 1:8d081fda0b16 209 MD3PWM1.pulsewidth_us(0);
IAA 1:8d081fda0b16 210 MD3CW1 = 0;
IAA 1:8d081fda0b16 211 MD3CCW1 = 0;
IAA 1:8d081fda0b16 212 MD3PWM2.pulsewidth_us(0);
IAA 1:8d081fda0b16 213 MD3CW2 = 0;
IAA 1:8d081fda0b16 214 MD3CCW2 = 0;
IAA 1:8d081fda0b16 215 magnet1 = 0;
IAA 1:8d081fda0b16 216 magnet2 = 0;
IAA 1:8d081fda0b16 217 magnet3 = 0;
IAA 1:8d081fda0b16 218 while(1){
IAA 1:8d081fda0b16 219 }
IAA 0:7648e025ea67 220 }//強制終了
IAA 1:8d081fda0b16 221 pc.printf("/t rightfront%d/n",(int)rightfront*gear*SPEED);
IAA 1:8d081fda0b16 222 pc.printf("/t leftfront%d/n",(int)leftfront*gear*SPEED);
IAA 1:8d081fda0b16 223 pc.printf("/t back%d/n",(int)back*gear*SPEED);
IAA 0:7648e025ea67 224 }
IAA 0:7648e025ea67 225 }