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.
main.cpp@2:39bf6e4bb403, 2019-09-18 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |