Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 2017NHKpin_config FEP R1307 PID ikarashiMDC omni_wheel
Fork of NHK2017_octopus2 by
bot/controller/controller.cpp@56:e9a5cfd23833, 2017-11-28 (annotated)
- Committer:
- number_key
- Date:
- Tue Nov 28 17:54:16 2017 +0900
- Revision:
- 56:e9a5cfd23833
- Parent:
- 52:320f910ca6ca
add drive5
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| uchitake |
1:845af5425eec | 1 | #include "controller.h" |
| uchitake |
1:845af5425eec | 2 | |
| uchitake |
1:845af5425eec | 3 | Controller::Controller() : |
| number_key |
49:69a7235d837a | 4 | FEP(XBee2TX, XBee2RX, ADDR1), |
| uchitake |
1:845af5425eec | 5 | data(), |
| uchitake |
1:845af5425eec | 6 | fepTemp(0), |
| uchitake |
1:845af5425eec | 7 | button1(), |
| uchitake |
1:845af5425eec | 8 | button2(), |
| uchitake |
1:845af5425eec | 9 | stick(), |
| uchitake |
1:845af5425eec | 10 | radian(), |
| uchitake |
1:845af5425eec | 11 | norm() |
| uchitake |
1:845af5425eec | 12 | { |
| uchitake |
1:845af5425eec | 13 | } |
| uchitake |
1:845af5425eec | 14 | |
| uchitake |
1:845af5425eec | 15 | Controller::Controller(PinName FEPtx, PinName FEPrx, int addr) : |
| uchitake |
1:845af5425eec | 16 | FEP(FEPtx, FEPrx, addr), |
| uchitake |
1:845af5425eec | 17 | data(), |
| uchitake |
1:845af5425eec | 18 | fepTemp(0), |
| uchitake |
1:845af5425eec | 19 | button1(), |
| uchitake |
1:845af5425eec | 20 | button2(), |
| uchitake |
1:845af5425eec | 21 | stick(), |
| uchitake |
1:845af5425eec | 22 | radian(), |
| uchitake |
1:845af5425eec | 23 | norm() |
| uchitake |
1:845af5425eec | 24 | { |
| uchitake |
1:845af5425eec | 25 | } |
| uchitake |
1:845af5425eec | 26 | |
| number_key |
52:320f910ca6ca | 27 | int Controller::receiveState() |
| uchitake |
1:845af5425eec | 28 | { |
| uchitake |
1:845af5425eec | 29 | fepTemp = FEP::read(data, DATA_SIZE); |
| uchitake |
1:845af5425eec | 30 | if(fepTemp == FEP_SUCCESS) { |
| uchitake |
1:845af5425eec | 31 | for(int i = 0; i < 7; i++) { |
| uchitake |
1:845af5425eec | 32 | button1[i] = data[4] % 2; |
| uchitake |
1:845af5425eec | 33 | data[4] /= 2; |
| uchitake |
1:845af5425eec | 34 | } |
| uchitake |
1:845af5425eec | 35 | for(int i=0; i<6; i++) { |
| uchitake |
1:845af5425eec | 36 | button2[i] = data[5] % 2; |
| uchitake |
1:845af5425eec | 37 | data[5] /= 2; |
| uchitake |
1:845af5425eec | 38 | } |
| uchitake |
1:845af5425eec | 39 | for(int i = 0; i < 4; i++) { |
| uchitake |
1:845af5425eec | 40 | stick[i] = -((double)(data[i] / STICK_DIVIDE) * 2.0 - 1.0); |
| takeuchi |
37:6b6616008e78 | 41 | if(stick[i] > 1.0) stick[i] = 1.0; |
| takeuchi |
37:6b6616008e78 | 42 | if(stick[i] < -1.0) stick[i] = -1.0; |
| uchitake |
1:845af5425eec | 43 | } |
| uchitake |
1:845af5425eec | 44 | setStick(); |
| number_key |
52:320f910ca6ca | 45 | } else if(fepTemp == FEP_DT_BIN) { |
| number_key |
52:320f910ca6ca | 46 | return 2; |
| number_key |
52:320f910ca6ca | 47 | } else if(fepTemp == FEP_DT_BIN) { |
| number_key |
52:320f910ca6ca | 48 | return 3; |
| uchitake |
1:845af5425eec | 49 | } else if(fepTemp == FEP_NO_RESPONSE) { |
| uchitake |
1:845af5425eec | 50 | return 0; |
| uchitake |
1:845af5425eec | 51 | } else { |
| number_key |
52:320f910ca6ca | 52 | return 4; |
| uchitake |
1:845af5425eec | 53 | } |
| uchitake |
1:845af5425eec | 54 | return 1; |
| uchitake |
1:845af5425eec | 55 | } |
| uchitake |
1:845af5425eec | 56 | |
| uchitake |
1:845af5425eec | 57 | void Controller::setStick() |
| uchitake |
1:845af5425eec | 58 | { |
| uchitake |
1:845af5425eec | 59 | for(int i = 0; i < 4; i++) { |
| uchitake |
1:845af5425eec | 60 | if(stick[i] < STICK_NEWTRAL && stick[i] > -STICK_NEWTRAL) stick[i] = 0; |
| uchitake |
1:845af5425eec | 61 | } |
| uchitake |
1:845af5425eec | 62 | |
| takeuchi |
43:c659cd5baa14 | 63 | radian[0] = atan2(stick[1], stick[0]); |
| uchitake |
1:845af5425eec | 64 | radian[1] = atan2(stick[3], -stick[2]); |
| uchitake |
1:845af5425eec | 65 | |
| uchitake |
1:845af5425eec | 66 | norm[0] = hypot(stick[0], stick[1]); |
| uchitake |
1:845af5425eec | 67 | norm[1] = hypot(stick[2], stick[3]); |
| uchitake |
1:845af5425eec | 68 | |
| uchitake |
1:845af5425eec | 69 | if(norm[0] < STICK_NEWTRAL) norm[0] = 0; |
| uchitake |
1:845af5425eec | 70 | if(norm[1] < STICK_NEWTRAL) norm[1] = 0; |
| uchitake |
1:845af5425eec | 71 | if(norm[0] > STICK_NORM_MAX) norm[0] = STICK_NORM_MAX; |
| uchitake |
1:845af5425eec | 72 | if(norm[1] > STICK_NORM_MAX) norm[1] = STICK_NORM_MAX; |
| uchitake |
1:845af5425eec | 73 | } |
| uchitake |
1:845af5425eec | 74 | |
| uchitake |
1:845af5425eec | 75 | bool Controller::getButton1(int number) const |
| uchitake |
1:845af5425eec | 76 | { |
| uchitake |
1:845af5425eec | 77 | return button1[number]; |
| uchitake |
1:845af5425eec | 78 | } |
| uchitake |
1:845af5425eec | 79 | |
| uchitake |
1:845af5425eec | 80 | bool Controller::getButton2(int number) const |
| uchitake |
1:845af5425eec | 81 | { |
| uchitake |
1:845af5425eec | 82 | return button2[number]; |
| uchitake |
1:845af5425eec | 83 | } |
| uchitake |
1:845af5425eec | 84 | |
| uchitake |
1:845af5425eec | 85 | float Controller::getStick(int number) const |
| uchitake |
1:845af5425eec | 86 | { |
| uchitake |
1:845af5425eec | 87 | return stick[number]; |
| uchitake |
1:845af5425eec | 88 | } |
| uchitake |
1:845af5425eec | 89 | |
| uchitake |
1:845af5425eec | 90 | float Controller::getRadian(int number) const |
| uchitake |
1:845af5425eec | 91 | { |
| uchitake |
1:845af5425eec | 92 | return radian[number]; |
| uchitake |
1:845af5425eec | 93 | } |
| uchitake |
1:845af5425eec | 94 | |
| uchitake |
1:845af5425eec | 95 | float Controller::getNorm(int number) const |
| uchitake |
1:845af5425eec | 96 | { |
| uchitake |
1:845af5425eec | 97 | return norm[number]; |
| uchitake |
1:845af5425eec | 98 | } |
