2022_NHK_B_canTR for 2022_NHK_B

Dependencies:   ikarashiCAN mbed

Dependents:   2022_NHK_B_sub1 2022_NHK_B_UK 2022_NHK_B_sub2

Committer:
umekou
Date:
Tue Oct 11 09:25:57 2022 +0000
Revision:
1:bbdfe8c4a57f
Parent:
0:dffb20a486f8
add memo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ikarashikota 0:dffb20a486f8 1
ikarashikota 0:dffb20a486f8 2 #include "mbed.h"
ikarashikota 0:dffb20a486f8 3 #include "ikarashiCAN.h"
ikarashikota 0:dffb20a486f8 4 #include "pinconfig.h"
ikarashikota 0:dffb20a486f8 5
ikarashikota 0:dffb20a486f8 6 ikarashiCAN icanR(canrRD, canrTD, 1);
ikarashikota 0:dffb20a486f8 7 ikarashiCAN icanT(cantRD, cantTD, 2);
ikarashikota 0:dffb20a486f8 8
ikarashikota 0:dffb20a486f8 9 /*センサ及びアクチュエータの変数*/
ikarashikota 0:dffb20a486f8 10 double motorSpeed[16];
umekou 1:bbdfe8c4a57f 11 /*
umekou 1:bbdfe8c4a57f 12 0:使用不可
umekou 1:bbdfe8c4a57f 13 1:sub2 旋回
umekou 1:bbdfe8c4a57f 14 2:sub2 上下
umekou 1:bbdfe8c4a57f 15 3:死
umekou 1:bbdfe8c4a57f 16 4:sub2 細木昇降
umekou 1:bbdfe8c4a57f 17 5:sub2   押し出し
umekou 1:bbdfe8c4a57f 18 6:sub2   ローラー正
umekou 1:bbdfe8c4a57f 19 7:sub2   ローラー負
umekou 1:bbdfe8c4a57f 20 8:main 足回り右前
umekou 1:bbdfe8c4a57f 21 9:main    左前
umekou 1:bbdfe8c4a57f 22 10:main    左後   
umekou 1:bbdfe8c4a57f 23 11:main    右後
umekou 1:bbdfe8c4a57f 24 12:main 関昇降
umekou 1:bbdfe8c4a57f 25 13:main  押し出し
umekou 1:bbdfe8c4a57f 26 14:main  射出
umekou 1:bbdfe8c4a57f 27 15:空き
umekou 1:bbdfe8c4a57f 28 */
ikarashikota 0:dffb20a486f8 29 int encoderValue[12];
umekou 1:bbdfe8c4a57f 30 /*
umekou 1:bbdfe8c4a57f 31 0:sub2 旋回
umekou 1:bbdfe8c4a57f 32 1:sub2 上下
umekou 1:bbdfe8c4a57f 33 2:sub2 細木昇降
umekou 1:bbdfe8c4a57f 34 3:sub2   押し出し
umekou 1:bbdfe8c4a57f 35 4:main 関昇降
umekou 1:bbdfe8c4a57f 36 5:main  押し出し
umekou 1:bbdfe8c4a57f 37 6:main  射出
umekou 1:bbdfe8c4a57f 38 */
ikarashikota 0:dffb20a486f8 39 uint8_t b[8];
ikarashikota 0:dffb20a486f8 40 int16_t stick[4];
ikarashikota 0:dffb20a486f8 41 double jyroValue;
ikarashikota 0:dffb20a486f8 42 /*************************/
ikarashikota 0:dffb20a486f8 43
ikarashikota 0:dffb20a486f8 44 int recievedMotorSpeed[16];
ikarashikota 0:dffb20a486f8 45 int recievedJyroValue = 0;
ikarashikota 0:dffb20a486f8 46 int sendCnt = 1;
ikarashikota 0:dffb20a486f8 47
ikarashikota 0:dffb20a486f8 48
ikarashikota 0:dffb20a486f8 49 void canAllReset()
ikarashikota 0:dffb20a486f8 50 {
ikarashikota 0:dffb20a486f8 51 for(int i=0; i<16; i++) {
ikarashikota 0:dffb20a486f8 52 motorSpeed[i] = 0;
ikarashikota 0:dffb20a486f8 53 recievedMotorSpeed[i] = 0;
ikarashikota 0:dffb20a486f8 54 if(i < 12) encoderValue[i] = 0;
ikarashikota 0:dffb20a486f8 55 if(i < 8) b[i] = 0;
ikarashikota 0:dffb20a486f8 56 if(i < 4) stick[i] = 0;
ikarashikota 0:dffb20a486f8 57 }
ikarashikota 0:dffb20a486f8 58 recievedJyroValue = 0;
ikarashikota 0:dffb20a486f8 59 }
ikarashikota 0:dffb20a486f8 60
ikarashikota 0:dffb20a486f8 61 void canAllRecieve()
ikarashikota 0:dffb20a486f8 62 {
ikarashikota 0:dffb20a486f8 63 if(icanR.checkReciever()) {
ikarashikota 0:dffb20a486f8 64 for(int i=0; i<16; i++) {
ikarashikota 0:dffb20a486f8 65 //モーターの各値を取得
ikarashikota 0:dffb20a486f8 66 icanR.ifOriginalGet(recievedMotorSpeed[i], i+1);
ikarashikota 0:dffb20a486f8 67 motorSpeed[i] = recievedMotorSpeed[i];
ikarashikota 0:dffb20a486f8 68 motorSpeed[i] /= 10;
ikarashikota 0:dffb20a486f8 69
ikarashikota 0:dffb20a486f8 70
ikarashikota 0:dffb20a486f8 71 //エンコーダの各値を取得
ikarashikota 0:dffb20a486f8 72 if(i < 12) {
ikarashikota 0:dffb20a486f8 73 icanR.ifOriginalGet(encoderValue[i], i+16+1);
ikarashikota 0:dffb20a486f8 74 }
ikarashikota 0:dffb20a486f8 75
ikarashikota 0:dffb20a486f8 76 //コントローラーのボタンの値を取得
ikarashikota 0:dffb20a486f8 77 if(i < 8) {
ikarashikota 0:dffb20a486f8 78 icanR.ifOriginalGet(b[i], i+29);
ikarashikota 0:dffb20a486f8 79 }
ikarashikota 0:dffb20a486f8 80
ikarashikota 0:dffb20a486f8 81 //コントローラーのスティックの値を取得
ikarashikota 0:dffb20a486f8 82 //左Y軸[0] X軸[1]、 右Y軸[2] X軸[3]
ikarashikota 0:dffb20a486f8 83 if(i < 4) {
ikarashikota 0:dffb20a486f8 84 icanR.ifOriginalGet(stick[i], i+37);
ikarashikota 0:dffb20a486f8 85 }
ikarashikota 0:dffb20a486f8 86 }
ikarashikota 0:dffb20a486f8 87 //ジャイロの値を取得
ikarashikota 0:dffb20a486f8 88 icanR.ifOriginalGet(recievedJyroValue, 41);
ikarashikota 0:dffb20a486f8 89 jyroValue = recievedJyroValue;
ikarashikota 0:dffb20a486f8 90 jyroValue /= 10000;
ikarashikota 0:dffb20a486f8 91 }
ikarashikota 0:dffb20a486f8 92 }
ikarashikota 0:dffb20a486f8 93
ikarashikota 0:dffb20a486f8 94 void canAllSet()
ikarashikota 0:dffb20a486f8 95 {
ikarashikota 0:dffb20a486f8 96 if(sendCnt >= 41) {
ikarashikota 0:dffb20a486f8 97 icanT.setData((int)(jyroValue * 10000));
ikarashikota 0:dffb20a486f8 98 icanT.originalSet(41);
ikarashikota 0:dffb20a486f8 99 sendCnt = 1;
ikarashikota 0:dffb20a486f8 100 } else if(sendCnt >= 37) {
ikarashikota 0:dffb20a486f8 101 icanT.setData(stick[sendCnt - 37]);
ikarashikota 0:dffb20a486f8 102 icanT.originalSet(sendCnt);
ikarashikota 0:dffb20a486f8 103 } else if(sendCnt >= 29) {
ikarashikota 0:dffb20a486f8 104 icanT.setData(b[sendCnt - 29]);
ikarashikota 0:dffb20a486f8 105 icanT.originalSet(sendCnt);
ikarashikota 0:dffb20a486f8 106 } else if(sendCnt >= 17) {
ikarashikota 0:dffb20a486f8 107 icanT.setData(encoderValue[sendCnt - 17]);
ikarashikota 0:dffb20a486f8 108 icanT.originalSet(sendCnt);
ikarashikota 0:dffb20a486f8 109 } else {
ikarashikota 0:dffb20a486f8 110 icanT.setData((int)(motorSpeed[sendCnt - 1] * 10));
ikarashikota 0:dffb20a486f8 111 icanT.originalSet(sendCnt);
ikarashikota 0:dffb20a486f8 112 }
ikarashikota 0:dffb20a486f8 113 sendCnt++;
ikarashikota 0:dffb20a486f8 114 }
ikarashikota 0:dffb20a486f8 115
ikarashikota 0:dffb20a486f8 116 /*********************/
ikarashikota 0:dffb20a486f8 117 void canTR(){
ikarashikota 0:dffb20a486f8 118 canAllSet();
ikarashikota 0:dffb20a486f8 119 icanT.send();
ikarashikota 0:dffb20a486f8 120 icanR.recieve();
ikarashikota 0:dffb20a486f8 121 canAllRecieve();
ikarashikota 0:dffb20a486f8 122 }
ikarashikota 0:dffb20a486f8 123 /*********************/