nhk2019_master

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }