足上げセンサ八個版仮

Dependencies:   mbed

Fork of 4LegUpDown_8sense by Bチーム

Committer:
ryuna
Date:
Wed Sep 10 13:20:59 2014 +0000
Revision:
4:04f2479b83c1
Parent:
3:cd7d3613e8e4
Child:
5:aba9f5e97e03
??

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryuna 0:76ba33d3b4a6 1 #include "mbed.h"
ryuna 0:76ba33d3b4a6 2
ryuna 3:cd7d3613e8e4 3 #define MOTOR_NUM 8
ryuna 3:cd7d3613e8e4 4 #define MOVE_TIME 0.060
ryuna 3:cd7d3613e8e4 5 #define MOVE_DOWN_TIME 0.070
ryuna 3:cd7d3613e8e4 6 #define TEMPRA_TIME 1.0
ryuna 3:cd7d3613e8e4 7 #define PWM_LEVEL 1.0
ryuna 0:76ba33d3b4a6 8
ryuna 0:76ba33d3b4a6 9 Serial pc(USBTX,USBRX);
ryuna 0:76ba33d3b4a6 10
ryuna 3:cd7d3613e8e4 11 InterruptIn Photo[8] = {p5,p6,p7,p8,p9,p10,p11,p12};
ryuna 4:04f2479b83c1 12 InterruptIn Sw(p30);
ryuna 3:cd7d3613e8e4 13
ryuna 1:807091115672 14
ryuna 3:cd7d3613e8e4 15 DigitalOut Led[4] = {LED1, LED2, LED3, LED4 };
ryuna 3:cd7d3613e8e4 16 BusOut Motor(p13, p14, p15, p16, p17, p18, p19, p20 );//{left front, right front, left back ,right back }
ryuna 4:04f2479b83c1 17 BusOut Tempra(p25,p26,p27,p28);
ryuna 4:04f2479b83c1 18 PwmOut Pwm[4] = {p21, p22, p23, p24 };
ryuna 1:807091115672 19
ryuna 3:cd7d3613e8e4 20 Timeout StopTimer[8];
ryuna 4:04f2479b83c1 21 //Timeout StopTempra;
ryuna 0:76ba33d3b4a6 22
ryuna 3:cd7d3613e8e4 23
ryuna 3:cd7d3613e8e4 24 volatile bool MotorState[4] = {0},Flag[4] = {0},FlagAdd[4] = {0},And[4] = {0};
ryuna 3:cd7d3613e8e4 25 volatile uint8_t Way = 0,UpCt = 0;
ryuna 0:76ba33d3b4a6 26
ryuna 3:cd7d3613e8e4 27 /*motorstate 上がっているか下がっている
ryuna 3:cd7d3613e8e4 28 flag 割込みに入ったか入ってないか←もしかしたらmotorstateと同じ可能性あり
ryuna 3:cd7d3613e8e4 29 flag_add入った回数の追加
ryuna 3:cd7d3613e8e4 30 足が上がった時向き決定
ryuna 3:cd7d3613e8e4 31 四回目の足下げで回数リセット
ryuna 1:807091115672 32
ryuna 3:cd7d3613e8e4 33 */
ryuna 3:cd7d3613e8e4 34
ryuna 1:807091115672 35 /*
ryuna 1:807091115672 36 bMotor = {
ryuna 1:807091115672 37 LeftFrontUp, LeftFrontDown,
ryuna 1:807091115672 38 RightFrontUp, RightFrontDown,
ryuna 1:807091115672 39 LeftBackUp, LeftBackDown,
ryuna 1:807091115672 40 RightBackUp, RightBackDown
ryuna 1:807091115672 41 };
ryuna 1:807091115672 42 */
ryuna 1:807091115672 43
ryuna 3:cd7d3613e8e4 44
ryuna 3:cd7d3613e8e4 45
ryuna 3:cd7d3613e8e4 46 void MotorStop0(){
ryuna 3:cd7d3613e8e4 47
ryuna 3:cd7d3613e8e4 48 Motor = Motor & 0x7F;
ryuna 3:cd7d3613e8e4 49
ryuna 3:cd7d3613e8e4 50 }
ryuna 3:cd7d3613e8e4 51 void MotorStop1(){
ryuna 3:cd7d3613e8e4 52
ryuna 3:cd7d3613e8e4 53 Motor = Motor & 0xBF;
ryuna 3:cd7d3613e8e4 54
ryuna 3:cd7d3613e8e4 55 }
ryuna 3:cd7d3613e8e4 56
ryuna 3:cd7d3613e8e4 57 void MotorStop2(){
ryuna 3:cd7d3613e8e4 58
ryuna 3:cd7d3613e8e4 59 Motor = Motor & 0xF7;
ryuna 3:cd7d3613e8e4 60
ryuna 3:cd7d3613e8e4 61 }
ryuna 3:cd7d3613e8e4 62 void MotorStop3(){
ryuna 3:cd7d3613e8e4 63
ryuna 3:cd7d3613e8e4 64 Motor = Motor & 0xFB;
ryuna 3:cd7d3613e8e4 65
ryuna 3:cd7d3613e8e4 66 }
ryuna 3:cd7d3613e8e4 67 void MotorStop4(){
ryuna 3:cd7d3613e8e4 68
ryuna 3:cd7d3613e8e4 69 Motor = Motor & 0xDF;
ryuna 3:cd7d3613e8e4 70
ryuna 3:cd7d3613e8e4 71 }
ryuna 3:cd7d3613e8e4 72 void MotorStop5(){
ryuna 3:cd7d3613e8e4 73
ryuna 3:cd7d3613e8e4 74 Motor = Motor & 0xEF;
ryuna 3:cd7d3613e8e4 75
ryuna 3:cd7d3613e8e4 76 }
ryuna 3:cd7d3613e8e4 77 void MotorStop6(){
ryuna 3:cd7d3613e8e4 78
ryuna 3:cd7d3613e8e4 79 Motor = Motor & 0xFD;
ryuna 3:cd7d3613e8e4 80
ryuna 3:cd7d3613e8e4 81 }
ryuna 3:cd7d3613e8e4 82
ryuna 3:cd7d3613e8e4 83 void MotorStop7(){
ryuna 3:cd7d3613e8e4 84
ryuna 3:cd7d3613e8e4 85 Motor = Motor & 0xFE;
ryuna 3:cd7d3613e8e4 86
ryuna 3:cd7d3613e8e4 87 }
ryuna 3:cd7d3613e8e4 88 void TempraStop(){
ryuna 3:cd7d3613e8e4 89 Motor = Tempra & 0x02;
ryuna 3:cd7d3613e8e4 90
ryuna 3:cd7d3613e8e4 91 }
ryuna 3:cd7d3613e8e4 92 void FallPhoto0(){//zero
ryuna 3:cd7d3613e8e4 93 //Wayの決定
ryuna 3:cd7d3613e8e4 94 if(Way == 0){
ryuna 3:cd7d3613e8e4 95 Way = 1;
ryuna 3:cd7d3613e8e4 96 }
ryuna 3:cd7d3613e8e4 97
ryuna 3:cd7d3613e8e4 98 if(Way == 1){
ryuna 3:cd7d3613e8e4 99 if(!MotorState[0]){
ryuna 3:cd7d3613e8e4 100
ryuna 3:cd7d3613e8e4 101 StopTimer[0].attach(&MotorStop0,MOVE_TIME);
ryuna 3:cd7d3613e8e4 102 Motor = Motor | 0x80;//10000000
ryuna 3:cd7d3613e8e4 103 MotorState[0] = 1;
ryuna 3:cd7d3613e8e4 104 Led[0]= 1;
ryuna 3:cd7d3613e8e4 105 }else{
ryuna 3:cd7d3613e8e4 106 Flag[0] = 1;
ryuna 3:cd7d3613e8e4 107 }
ryuna 3:cd7d3613e8e4 108 }else if(Way == 2){
ryuna 3:cd7d3613e8e4 109
ryuna 3:cd7d3613e8e4 110 if(Flag[0]&&!FlagAdd[0]){
ryuna 3:cd7d3613e8e4 111 FlagAdd[0] = 1;
ryuna 3:cd7d3613e8e4 112 }else{
ryuna 3:cd7d3613e8e4 113 StopTimer[1].attach(&MotorStop1,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 114 Motor = Motor | 0x40;//0x40 = 01000000
ryuna 3:cd7d3613e8e4 115 MotorState[0] = 0;
ryuna 3:cd7d3613e8e4 116 Flag[0] = 0;
ryuna 3:cd7d3613e8e4 117 Led[0] = 0;
ryuna 3:cd7d3613e8e4 118 And[0] = 1;
ryuna 3:cd7d3613e8e4 119
ryuna 3:cd7d3613e8e4 120 }
ryuna 3:cd7d3613e8e4 121 }
ryuna 3:cd7d3613e8e4 122 }
ryuna 3:cd7d3613e8e4 123
ryuna 3:cd7d3613e8e4 124 void FallPhoto1(){//one
ryuna 3:cd7d3613e8e4 125 //Wayの決定
ryuna 3:cd7d3613e8e4 126 if(Way ==0){
ryuna 3:cd7d3613e8e4 127 Way = 2;
ryuna 3:cd7d3613e8e4 128 }
ryuna 3:cd7d3613e8e4 129
ryuna 3:cd7d3613e8e4 130 if(Way == 2){
ryuna 3:cd7d3613e8e4 131 if(!MotorState[0]){
ryuna 3:cd7d3613e8e4 132
ryuna 3:cd7d3613e8e4 133 StopTimer[0].attach(&MotorStop0,MOVE_TIME);
ryuna 3:cd7d3613e8e4 134 Motor = Motor | 0x80;//10000000
ryuna 3:cd7d3613e8e4 135 MotorState[0] = 1;
ryuna 3:cd7d3613e8e4 136 Led[0] = 1;
ryuna 3:cd7d3613e8e4 137 }else{
ryuna 3:cd7d3613e8e4 138 Flag[0] = 1;
ryuna 3:cd7d3613e8e4 139 }
ryuna 3:cd7d3613e8e4 140 }else if(Way == 1){
ryuna 3:cd7d3613e8e4 141
ryuna 3:cd7d3613e8e4 142 if(Flag[0]&&!FlagAdd[0]){
ryuna 3:cd7d3613e8e4 143 FlagAdd[0] = 1;
ryuna 3:cd7d3613e8e4 144 }else{
ryuna 3:cd7d3613e8e4 145 StopTimer[1].attach(&MotorStop1,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 146 Motor = Motor | 0x40;//0x40 = 01000000
ryuna 3:cd7d3613e8e4 147 MotorState[0] = 0;
ryuna 3:cd7d3613e8e4 148 Flag[0] = 0;
ryuna 3:cd7d3613e8e4 149 Led[0] = 0;
ryuna 3:cd7d3613e8e4 150 And[0] = 1;
ryuna 3:cd7d3613e8e4 151
ryuna 3:cd7d3613e8e4 152 }
ryuna 3:cd7d3613e8e4 153 }
ryuna 3:cd7d3613e8e4 154
ryuna 3:cd7d3613e8e4 155 }
ryuna 3:cd7d3613e8e4 156 void FallPhoto2(){//two
ryuna 3:cd7d3613e8e4 157 //Wayの決定
ryuna 3:cd7d3613e8e4 158
ryuna 3:cd7d3613e8e4 159 if(Way == 1){
ryuna 3:cd7d3613e8e4 160 if(!MotorState[1]){
ryuna 3:cd7d3613e8e4 161
ryuna 3:cd7d3613e8e4 162 StopTimer[2].attach(&MotorStop2,MOVE_TIME);
ryuna 3:cd7d3613e8e4 163 Motor = Motor | 0x08;
ryuna 3:cd7d3613e8e4 164 MotorState[1] = 1;
ryuna 3:cd7d3613e8e4 165 Led[1] = 1;
ryuna 3:cd7d3613e8e4 166 }else{
ryuna 3:cd7d3613e8e4 167 Flag[1] = 1;
ryuna 3:cd7d3613e8e4 168 }
ryuna 3:cd7d3613e8e4 169 }else if(Way == 2){
ryuna 3:cd7d3613e8e4 170
ryuna 3:cd7d3613e8e4 171 if(Flag[1]&&!FlagAdd[1]){
ryuna 3:cd7d3613e8e4 172 FlagAdd[1] = 1;
ryuna 3:cd7d3613e8e4 173 }else{
ryuna 3:cd7d3613e8e4 174 StopTimer[3].attach(&MotorStop3,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 175 Motor = Motor | 0x04;
ryuna 3:cd7d3613e8e4 176 MotorState[1] = 0;
ryuna 3:cd7d3613e8e4 177 Flag[1] = 0;
ryuna 3:cd7d3613e8e4 178 Led[1] = 0;
ryuna 3:cd7d3613e8e4 179 And[1] = 1;
ryuna 3:cd7d3613e8e4 180 }
ryuna 3:cd7d3613e8e4 181 }
ryuna 3:cd7d3613e8e4 182
ryuna 3:cd7d3613e8e4 183 }
ryuna 3:cd7d3613e8e4 184 void FallPhoto3(){ //three
ryuna 3:cd7d3613e8e4 185 //Way
ryuna 1:807091115672 186
ryuna 3:cd7d3613e8e4 187 if(Way == 2){
ryuna 3:cd7d3613e8e4 188 if(!MotorState[1]){
ryuna 3:cd7d3613e8e4 189
ryuna 3:cd7d3613e8e4 190 StopTimer[2].attach(&MotorStop2,MOVE_TIME);
ryuna 3:cd7d3613e8e4 191 Motor = Motor | 0x08;
ryuna 3:cd7d3613e8e4 192 MotorState[1] = 1;
ryuna 3:cd7d3613e8e4 193 Led[1] = 1;
ryuna 3:cd7d3613e8e4 194 }else{
ryuna 3:cd7d3613e8e4 195 Flag[1] = 1;
ryuna 3:cd7d3613e8e4 196 }
ryuna 3:cd7d3613e8e4 197 }else if(Way == 1){
ryuna 3:cd7d3613e8e4 198
ryuna 3:cd7d3613e8e4 199 if(Flag[1]&&!FlagAdd[1]){
ryuna 3:cd7d3613e8e4 200 FlagAdd[1] = 1;
ryuna 3:cd7d3613e8e4 201 }else{
ryuna 3:cd7d3613e8e4 202 StopTimer[3].attach(&MotorStop3,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 203 Motor = Motor | 0x04;
ryuna 3:cd7d3613e8e4 204 MotorState[1] = 0;
ryuna 3:cd7d3613e8e4 205 Flag[1] = 0;
ryuna 3:cd7d3613e8e4 206 Led[1] = 0;
ryuna 3:cd7d3613e8e4 207 And[1] = 1;
ryuna 3:cd7d3613e8e4 208
ryuna 3:cd7d3613e8e4 209 }
ryuna 3:cd7d3613e8e4 210 }
ryuna 3:cd7d3613e8e4 211 }
ryuna 3:cd7d3613e8e4 212 void FallPhoto4(){//four
ryuna 3:cd7d3613e8e4 213
ryuna 3:cd7d3613e8e4 214 if(Way ==0){
ryuna 3:cd7d3613e8e4 215 Way = 1;
ryuna 3:cd7d3613e8e4 216 }
ryuna 3:cd7d3613e8e4 217 if(Way == 1){
ryuna 3:cd7d3613e8e4 218 if(!MotorState[2]){
ryuna 3:cd7d3613e8e4 219 StopTimer[4].attach(&MotorStop4,MOVE_TIME);
ryuna 3:cd7d3613e8e4 220 Motor = Motor | 0x20;//00100000
ryuna 3:cd7d3613e8e4 221 MotorState[2] = 1;
ryuna 3:cd7d3613e8e4 222 Led[2] = 1;
ryuna 3:cd7d3613e8e4 223 }else{
ryuna 3:cd7d3613e8e4 224 Flag[2] = 1;
ryuna 3:cd7d3613e8e4 225 }
ryuna 3:cd7d3613e8e4 226 }else if(Way == 2){
ryuna 3:cd7d3613e8e4 227
ryuna 3:cd7d3613e8e4 228 if(Flag[2]&&!FlagAdd[2]){
ryuna 3:cd7d3613e8e4 229 FlagAdd[2] = 1;
ryuna 3:cd7d3613e8e4 230 }else{
ryuna 3:cd7d3613e8e4 231 StopTimer[5].attach(&MotorStop5,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 232 Motor = Motor | 0x10;
ryuna 3:cd7d3613e8e4 233 MotorState[2] = 0;
ryuna 3:cd7d3613e8e4 234 Flag[2] = 0;
ryuna 3:cd7d3613e8e4 235 Led[2] = 0;
ryuna 3:cd7d3613e8e4 236 And[2] = 1;
ryuna 3:cd7d3613e8e4 237
ryuna 3:cd7d3613e8e4 238 }
ryuna 3:cd7d3613e8e4 239 }
ryuna 3:cd7d3613e8e4 240
ryuna 3:cd7d3613e8e4 241 }
ryuna 3:cd7d3613e8e4 242 void FallPhoto5(){//five
ryuna 3:cd7d3613e8e4 243 if(Way ==0){
ryuna 3:cd7d3613e8e4 244 Way = 2;
ryuna 3:cd7d3613e8e4 245 }
ryuna 3:cd7d3613e8e4 246
ryuna 3:cd7d3613e8e4 247 if(Way == 2){
ryuna 3:cd7d3613e8e4 248 if(!MotorState[2]){
ryuna 3:cd7d3613e8e4 249 StopTimer[4].attach(&MotorStop4,MOVE_TIME);
ryuna 3:cd7d3613e8e4 250 Motor = Motor | 0x20;//00100000
ryuna 3:cd7d3613e8e4 251 MotorState[2] = 1;
ryuna 3:cd7d3613e8e4 252 Led[2] = 1;
ryuna 3:cd7d3613e8e4 253 }else{
ryuna 3:cd7d3613e8e4 254 Flag[2] = 1;
ryuna 3:cd7d3613e8e4 255 }
ryuna 3:cd7d3613e8e4 256 }else if(Way == 1){
ryuna 3:cd7d3613e8e4 257
ryuna 3:cd7d3613e8e4 258 if(Flag[2]&&!FlagAdd[2]){
ryuna 3:cd7d3613e8e4 259 FlagAdd[2] = 1;
ryuna 3:cd7d3613e8e4 260 }else{
ryuna 3:cd7d3613e8e4 261 StopTimer[5].attach(&MotorStop5,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 262 Motor = Motor | 0x10;
ryuna 3:cd7d3613e8e4 263 MotorState[2] = 0;
ryuna 3:cd7d3613e8e4 264 Flag[2] = 0;
ryuna 3:cd7d3613e8e4 265 Led[2] = 0;
ryuna 3:cd7d3613e8e4 266 And[2] = 1;
ryuna 3:cd7d3613e8e4 267 }
ryuna 3:cd7d3613e8e4 268 }
ryuna 3:cd7d3613e8e4 269 }
ryuna 3:cd7d3613e8e4 270 void FallPhoto6(){//six
ryuna 3:cd7d3613e8e4 271
ryuna 3:cd7d3613e8e4 272
ryuna 3:cd7d3613e8e4 273 if(Way == 1){
ryuna 3:cd7d3613e8e4 274 if(!MotorState[3]){
ryuna 3:cd7d3613e8e4 275 StopTimer[6].attach(&MotorStop6,MOVE_TIME);
ryuna 3:cd7d3613e8e4 276 Motor = Motor | 0x02;
ryuna 3:cd7d3613e8e4 277 MotorState[3] = 1;
ryuna 3:cd7d3613e8e4 278 Led[3] = 1;
ryuna 3:cd7d3613e8e4 279 }else{
ryuna 3:cd7d3613e8e4 280 Flag[3] = 1;
ryuna 3:cd7d3613e8e4 281 }
ryuna 3:cd7d3613e8e4 282 }else if(Way == 2){
ryuna 3:cd7d3613e8e4 283
ryuna 3:cd7d3613e8e4 284 if(Flag[3]&&!FlagAdd[3]){
ryuna 3:cd7d3613e8e4 285 FlagAdd[3] = 1;
ryuna 3:cd7d3613e8e4 286 }else{
ryuna 3:cd7d3613e8e4 287 StopTimer[7].attach(&MotorStop7,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 288 Motor = Motor | 0x01;
ryuna 3:cd7d3613e8e4 289 MotorState[3] = 0;
ryuna 3:cd7d3613e8e4 290 Flag[3] = 0;
ryuna 3:cd7d3613e8e4 291 Led[3] = 0;
ryuna 3:cd7d3613e8e4 292 And[3] = 1;
ryuna 3:cd7d3613e8e4 293 }
ryuna 3:cd7d3613e8e4 294 }
ryuna 3:cd7d3613e8e4 295 }
ryuna 3:cd7d3613e8e4 296 void FallPhoto7(){//seven
ryuna 3:cd7d3613e8e4 297
ryuna 3:cd7d3613e8e4 298
ryuna 3:cd7d3613e8e4 299
ryuna 3:cd7d3613e8e4 300 if(Way == 2){
ryuna 3:cd7d3613e8e4 301 if(!MotorState[3]){
ryuna 3:cd7d3613e8e4 302 StopTimer[6].attach(&MotorStop6,MOVE_TIME);
ryuna 3:cd7d3613e8e4 303 Motor = Motor | 0x02;
ryuna 3:cd7d3613e8e4 304 MotorState[3] = 1;
ryuna 3:cd7d3613e8e4 305 Led[3] = 1;
ryuna 3:cd7d3613e8e4 306 }else{
ryuna 3:cd7d3613e8e4 307 Flag[3] = 1;
ryuna 3:cd7d3613e8e4 308 }
ryuna 3:cd7d3613e8e4 309 }else if(Way == 1
ryuna 3:cd7d3613e8e4 310 ){
ryuna 3:cd7d3613e8e4 311
ryuna 3:cd7d3613e8e4 312 if(Flag[3]&&!FlagAdd[3]){
ryuna 3:cd7d3613e8e4 313 FlagAdd[3] = 1;
ryuna 3:cd7d3613e8e4 314 }else{
ryuna 3:cd7d3613e8e4 315 StopTimer[7].attach(&MotorStop7,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 316 Motor = Motor | 0x01;
ryuna 3:cd7d3613e8e4 317 MotorState[3] = 0;
ryuna 3:cd7d3613e8e4 318 Flag[3] = 0;
ryuna 3:cd7d3613e8e4 319 Led[3] = 0;
ryuna 3:cd7d3613e8e4 320 And[3] = 1;
ryuna 3:cd7d3613e8e4 321 }
ryuna 3:cd7d3613e8e4 322 }
ryuna 3:cd7d3613e8e4 323 }
ryuna 3:cd7d3613e8e4 324
ryuna 3:cd7d3613e8e4 325 void Reset(){
ryuna 3:cd7d3613e8e4 326
ryuna 3:cd7d3613e8e4 327 int i;
ryuna 3:cd7d3613e8e4 328
ryuna 3:cd7d3613e8e4 329 if(MotorState[0]){
ryuna 3:cd7d3613e8e4 330 StopTimer[1].attach(&MotorStop1,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 331 Motor = Motor | 0x40;//
ryuna 3:cd7d3613e8e4 332 }
ryuna 3:cd7d3613e8e4 333 if(MotorState[1]){
ryuna 3:cd7d3613e8e4 334 StopTimer[3].attach(&MotorStop3,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 335 Motor = Motor | 0x04;//00000100
ryuna 3:cd7d3613e8e4 336 }
ryuna 3:cd7d3613e8e4 337 if(MotorState[2]){
ryuna 3:cd7d3613e8e4 338 StopTimer[5].attach(&MotorStop5,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 339 Motor = Motor | 0x10;//00010000
ryuna 3:cd7d3613e8e4 340 }
ryuna 3:cd7d3613e8e4 341 if(MotorState[3]){
ryuna 3:cd7d3613e8e4 342 StopTimer[7].attach(&MotorStop7,MOVE_DOWN_TIME);
ryuna 3:cd7d3613e8e4 343 Motor = Motor | 0x01;//00000001
ryuna 3:cd7d3613e8e4 344 }
ryuna 3:cd7d3613e8e4 345 for(i = 0; i > 4; i++){
ryuna 4:04f2479b83c1 346 Led[i] = 0;
ryuna 3:cd7d3613e8e4 347 Flag[i] = 0;
ryuna 3:cd7d3613e8e4 348 FlagAdd[i] = 0;
ryuna 3:cd7d3613e8e4 349 MotorState[i] = 0;
ryuna 4:04f2479b83c1 350 And[i] = 0;
ryuna 1:807091115672 351 }
ryuna 4:04f2479b83c1 352 Way = 0;
ryuna 4:04f2479b83c1 353 UpCt = 0;
ryuna 1:807091115672 354
ryuna 1:807091115672 355 }
ryuna 0:76ba33d3b4a6 356
ryuna 3:cd7d3613e8e4 357 void NumCount(){//足を上げた回数を記録
ryuna 0:76ba33d3b4a6 358
ryuna 3:cd7d3613e8e4 359 bool AndCk = And[0]&And[1]&And[2]&And[3];
ryuna 4:04f2479b83c1 360 if(Way == 1){
ryuna 4:04f2479b83c1 361 Tempra = 0x0A;
ryuna 4:04f2479b83c1 362 }
ryuna 3:cd7d3613e8e4 363 if(AndCk){
ryuna 3:cd7d3613e8e4 364 UpCt ++;
ryuna 3:cd7d3613e8e4 365 And[0] = And[1] = And[2] = And[3] = 0 ;
ryuna 3:cd7d3613e8e4 366 if(UpCt > 4){
ryuna 4:04f2479b83c1 367 Tempra = 0;
ryuna 3:cd7d3613e8e4 368 UpCt = 0;
ryuna 4:04f2479b83c1 369 Way = 0;
ryuna 4:04f2479b83c1 370
ryuna 3:cd7d3613e8e4 371 }
ryuna 1:807091115672 372 }
ryuna 1:807091115672 373 }
ryuna 1:807091115672 374
ryuna 3:cd7d3613e8e4 375 void SetUp(){
ryuna 3:cd7d3613e8e4 376 int i;
ryuna 3:cd7d3613e8e4 377 for(i = 0 ; i > 4 ; i++ ){
ryuna 3:cd7d3613e8e4 378 Pwm[i] = PWM_LEVEL ;
ryuna 3:cd7d3613e8e4 379 }
ryuna 3:cd7d3613e8e4 380 for(i = 0 ; i > MOTOR_NUM ;i++ ){
ryuna 3:cd7d3613e8e4 381 Photo[i].mode(PullUp);
ryuna 1:807091115672 382 }
ryuna 3:cd7d3613e8e4 383 Photo[0].fall(FallPhoto0);
ryuna 3:cd7d3613e8e4 384 Photo[1].fall(FallPhoto1);
ryuna 3:cd7d3613e8e4 385 Photo[2].fall(FallPhoto2);
ryuna 3:cd7d3613e8e4 386 Photo[3].fall(FallPhoto3);
ryuna 3:cd7d3613e8e4 387 Photo[4].fall(FallPhoto4);
ryuna 3:cd7d3613e8e4 388 Photo[5].fall(FallPhoto5);
ryuna 3:cd7d3613e8e4 389 Photo[6].fall(FallPhoto6);
ryuna 3:cd7d3613e8e4 390 Photo[7].fall(FallPhoto7);
ryuna 1:807091115672 391
ryuna 3:cd7d3613e8e4 392 Sw.mode(PullUp);
ryuna 4:04f2479b83c1 393 //Sw.fall(Reset);
ryuna 3:cd7d3613e8e4 394
ryuna 1:807091115672 395
ryuna 1:807091115672 396 }
ryuna 1:807091115672 397
ryuna 0:76ba33d3b4a6 398 int main() {
ryuna 2:89cf1003e119 399
ryuna 3:cd7d3613e8e4 400 SetUp();
ryuna 3:cd7d3613e8e4 401 wait(0.5);
ryuna 2:89cf1003e119 402
ryuna 1:807091115672 403 while(1){
ryuna 3:cd7d3613e8e4 404 NumCount();
ryuna 0:76ba33d3b4a6 405
ryuna 0:76ba33d3b4a6 406 }
ryuna 0:76ba33d3b4a6 407 }