ケンタ ミヤザキ
/
nhk_2019_master_01
nhk2019_master
main.cpp@0:9969c88facec, 2019-02-24 (annotated)
- Committer:
- kenken0721
- Date:
- Sun Feb 24 13:34:41 2019 +0000
- Revision:
- 0:9969c88facec
- Child:
- 1:be4238d819bb
nhk2019_master
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenken0721 | 0:9969c88facec | 1 | #include "mbed.h" |
kenken0721 | 0:9969c88facec | 2 | |
kenken0721 | 0:9969c88facec | 3 | int val = 0; |
kenken0721 | 0:9969c88facec | 4 | |
kenken0721 | 0:9969c88facec | 5 | Serial pc( USBTX, USBRX); |
kenken0721 | 0:9969c88facec | 6 | CAN can( PA_11, PA_12); |
kenken0721 | 0:9969c88facec | 7 | CANMessage msg; |
kenken0721 | 0:9969c88facec | 8 | DigitalOut led (PA_5); |
kenken0721 | 0:9969c88facec | 9 | DigitalIn start(PB_13); |
kenken0721 | 0:9969c88facec | 10 | |
kenken0721 | 0:9969c88facec | 11 | bool finishFlags[4] = {false, false, false, false}; |
kenken0721 | 0:9969c88facec | 12 | /* |
kenken0721 | 0:9969c88facec | 13 | void inter(){ |
kenken0721 | 0:9969c88facec | 14 | can.read(msg); |
kenken0721 | 0:9969c88facec | 15 | if(msg.id >= 4 && msg.id <= 7){ |
kenken0721 | 0:9969c88facec | 16 | if(msg.data[0] == 0){ |
kenken0721 | 0:9969c88facec | 17 | finishFlags[msg.id - 4] = false; |
kenken0721 | 0:9969c88facec | 18 | }else{ |
kenken0721 | 0:9969c88facec | 19 | finishFlags[msg.id - 4] = true; |
kenken0721 | 0:9969c88facec | 20 | } |
kenken0721 | 0:9969c88facec | 21 | } |
kenken0721 | 0:9969c88facec | 22 | } |
kenken0721 | 0:9969c88facec | 23 | */ |
kenken0721 | 0:9969c88facec | 24 | void checkFlags(int id){ |
kenken0721 | 0:9969c88facec | 25 | char data = 10; |
kenken0721 | 0:9969c88facec | 26 | if(!finishFlags[id]){ |
kenken0721 | 0:9969c88facec | 27 | can.write( CANMessage((id + 4),&data,1) ); |
kenken0721 | 0:9969c88facec | 28 | while(1){ |
kenken0721 | 0:9969c88facec | 29 | if(can.read(msg)){ |
kenken0721 | 0:9969c88facec | 30 | break; |
kenken0721 | 0:9969c88facec | 31 | } |
kenken0721 | 0:9969c88facec | 32 | } |
kenken0721 | 0:9969c88facec | 33 | if(msg.id == id+4){ |
kenken0721 | 0:9969c88facec | 34 | if(msg.data[0] == 0){ |
kenken0721 | 0:9969c88facec | 35 | finishFlags[msg.id - 4] = false; |
kenken0721 | 0:9969c88facec | 36 | }else{ |
kenken0721 | 0:9969c88facec | 37 | finishFlags[msg.id - 4] = true; |
kenken0721 | 0:9969c88facec | 38 | } |
kenken0721 | 0:9969c88facec | 39 | } |
kenken0721 | 0:9969c88facec | 40 | } |
kenken0721 | 0:9969c88facec | 41 | } |
kenken0721 | 0:9969c88facec | 42 | |
kenken0721 | 0:9969c88facec | 43 | |
kenken0721 | 0:9969c88facec | 44 | void waitReach(int id){ |
kenken0721 | 0:9969c88facec | 45 | while(1){ |
kenken0721 | 0:9969c88facec | 46 | checkFlags(id); |
kenken0721 | 0:9969c88facec | 47 | pc.printf("%d \t",id); |
kenken0721 | 0:9969c88facec | 48 | |
kenken0721 | 0:9969c88facec | 49 | pc.printf("%d \n",finishFlags[id]); |
kenken0721 | 0:9969c88facec | 50 | //bool flag = true; |
kenken0721 | 0:9969c88facec | 51 | /* |
kenken0721 | 0:9969c88facec | 52 | for(int i=0;i<4;i++){ |
kenken0721 | 0:9969c88facec | 53 | flag = flag & finishFlags[i]; |
kenken0721 | 0:9969c88facec | 54 | pc.printf("%d \t",finishFlags[i]); |
kenken0721 | 0:9969c88facec | 55 | } |
kenken0721 | 0:9969c88facec | 56 | */ |
kenken0721 | 0:9969c88facec | 57 | //pc.printf("\n"); |
kenken0721 | 0:9969c88facec | 58 | //pc.printf("%d \n",start.read()); |
kenken0721 | 0:9969c88facec | 59 | // pc.printf("%d \n",finishFlags[id]); |
kenken0721 | 0:9969c88facec | 60 | if(finishFlags[id] == true){ |
kenken0721 | 0:9969c88facec | 61 | break; |
kenken0721 | 0:9969c88facec | 62 | } |
kenken0721 | 0:9969c88facec | 63 | } |
kenken0721 | 0:9969c88facec | 64 | } |
kenken0721 | 0:9969c88facec | 65 | |
kenken0721 | 0:9969c88facec | 66 | void allWaitReach(){ |
kenken0721 | 0:9969c88facec | 67 | for(int i=0;i<4;i++){ |
kenken0721 | 0:9969c88facec | 68 | waitReach(i); |
kenken0721 | 0:9969c88facec | 69 | } |
kenken0721 | 0:9969c88facec | 70 | //pc.printf(" \n"); |
kenken0721 | 0:9969c88facec | 71 | } |
kenken0721 | 0:9969c88facec | 72 | |
kenken0721 | 0:9969c88facec | 73 | void step(int id, int y, bool z){ |
kenken0721 | 0:9969c88facec | 74 | char data[2] = {y,z}; |
kenken0721 | 0:9969c88facec | 75 | can.write(CANMessage(id,data,2) ); |
kenken0721 | 0:9969c88facec | 76 | finishFlags[id] = false; |
kenken0721 | 0:9969c88facec | 77 | wait_ms(2); |
kenken0721 | 0:9969c88facec | 78 | } |
kenken0721 | 0:9969c88facec | 79 | |
kenken0721 | 0:9969c88facec | 80 | int main() { |
kenken0721 | 0:9969c88facec | 81 | wait(1); |
kenken0721 | 0:9969c88facec | 82 | start.mode(PullUp); |
kenken0721 | 0:9969c88facec | 83 | can.frequency(100000); |
kenken0721 | 0:9969c88facec | 84 | //can.attach(&inter); |
kenken0721 | 0:9969c88facec | 85 | led.write(0); |
kenken0721 | 0:9969c88facec | 86 | int count = 0; |
kenken0721 | 0:9969c88facec | 87 | while(1){ |
kenken0721 | 0:9969c88facec | 88 | if(start.read() == 0){ |
kenken0721 | 0:9969c88facec | 89 | count++; |
kenken0721 | 0:9969c88facec | 90 | } |
kenken0721 | 0:9969c88facec | 91 | if(count>= 100){ |
kenken0721 | 0:9969c88facec | 92 | break; |
kenken0721 | 0:9969c88facec | 93 | } |
kenken0721 | 0:9969c88facec | 94 | } |
kenken0721 | 0:9969c88facec | 95 | |
kenken0721 | 0:9969c88facec | 96 | step(0,10,1); |
kenken0721 | 0:9969c88facec | 97 | step(1,10,0); |
kenken0721 | 0:9969c88facec | 98 | step(2,10,0); |
kenken0721 | 0:9969c88facec | 99 | step(3,10,1); |
kenken0721 | 0:9969c88facec | 100 | allWaitReach(); |
kenken0721 | 0:9969c88facec | 101 | |
kenken0721 | 0:9969c88facec | 102 | wait(2.0); |
kenken0721 | 0:9969c88facec | 103 | while (true) { |
kenken0721 | 0:9969c88facec | 104 | /* |
kenken0721 | 0:9969c88facec | 105 | //led.write(1); |
kenken0721 | 0:9969c88facec | 106 | step(2,10,1); |
kenken0721 | 0:9969c88facec | 107 | allWaitReach(); |
kenken0721 | 0:9969c88facec | 108 | //pc.printf("ok \n"); |
kenken0721 | 0:9969c88facec | 109 | //wait(3.0); |
kenken0721 | 0:9969c88facec | 110 | step(2,200,0); |
kenken0721 | 0:9969c88facec | 111 | allWaitReach(); |
kenken0721 | 0:9969c88facec | 112 | //pc.printf("ok \n"); |
kenken0721 | 0:9969c88facec | 113 | */ |
kenken0721 | 0:9969c88facec | 114 | |
kenken0721 | 0:9969c88facec | 115 | step(1,200,0); |
kenken0721 | 0:9969c88facec | 116 | step(2,200,0); |
kenken0721 | 0:9969c88facec | 117 | waitReach(1); |
kenken0721 | 0:9969c88facec | 118 | waitReach(2); |
kenken0721 | 0:9969c88facec | 119 | |
kenken0721 | 0:9969c88facec | 120 | step(0,10,0); |
kenken0721 | 0:9969c88facec | 121 | step(1,200,1); |
kenken0721 | 0:9969c88facec | 122 | step(2,200,1); |
kenken0721 | 0:9969c88facec | 123 | step(3,10,0); |
kenken0721 | 0:9969c88facec | 124 | allWaitReach(); |
kenken0721 | 0:9969c88facec | 125 | |
kenken0721 | 0:9969c88facec | 126 | step(1,10,1); |
kenken0721 | 0:9969c88facec | 127 | step(2,10,1); |
kenken0721 | 0:9969c88facec | 128 | waitReach(1); |
kenken0721 | 0:9969c88facec | 129 | waitReach(2); |
kenken0721 | 0:9969c88facec | 130 | |
kenken0721 | 0:9969c88facec | 131 | step(0,200,0); |
kenken0721 | 0:9969c88facec | 132 | step(3,200,0); |
kenken0721 | 0:9969c88facec | 133 | waitReach(0); |
kenken0721 | 0:9969c88facec | 134 | waitReach(3); |
kenken0721 | 0:9969c88facec | 135 | |
kenken0721 | 0:9969c88facec | 136 | step(0,200,1); |
kenken0721 | 0:9969c88facec | 137 | step(1,10,0); |
kenken0721 | 0:9969c88facec | 138 | step(2,10,0); |
kenken0721 | 0:9969c88facec | 139 | step(3,200,1); |
kenken0721 | 0:9969c88facec | 140 | allWaitReach(); |
kenken0721 | 0:9969c88facec | 141 | |
kenken0721 | 0:9969c88facec | 142 | step(0,10,1); |
kenken0721 | 0:9969c88facec | 143 | step(3,10,1); |
kenken0721 | 0:9969c88facec | 144 | waitReach(0); |
kenken0721 | 0:9969c88facec | 145 | waitReach(3); |
kenken0721 | 0:9969c88facec | 146 | |
kenken0721 | 0:9969c88facec | 147 | |
kenken0721 | 0:9969c88facec | 148 | //wait(3.0); |
kenken0721 | 0:9969c88facec | 149 | //pc.printf("%d \t",val); |
kenken0721 | 0:9969c88facec | 150 | |
kenken0721 | 0:9969c88facec | 151 | } |
kenken0721 | 0:9969c88facec | 152 | } |