2022_NHK_B_canTR for 2022_NHK_B
Dependencies: ikarashiCAN mbed
Dependents: 2022_NHK_B_sub1 2022_NHK_B_UK 2022_NHK_B_sub2
can_tr.h@1:bbdfe8c4a57f, 2022-10-11 (annotated)
- 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?
User | Revision | Line number | New 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 | /*********************/ |