Miya Miyagawa
/
RS485_line
ROBOCON 2019
main.cpp@0:a1405cc91cca, 2019-07-23 (annotated)
- Committer:
- Ryosei
- Date:
- Tue Jul 23 07:16:58 2019 +0000
- Revision:
- 0:a1405cc91cca
getting to the data from linetracehub by RS485
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ryosei | 0:a1405cc91cca | 1 | #include "mbed.h" |
Ryosei | 0:a1405cc91cca | 2 | |
Ryosei | 0:a1405cc91cca | 3 | Serial pc(USBTX,USBRX); |
Ryosei | 0:a1405cc91cca | 4 | Serial linehubuart(PA_9,PA_10); |
Ryosei | 0:a1405cc91cca | 5 | /* |
Ryosei | 0:a1405cc91cca | 6 | struct linedata { |
Ryosei | 0:a1405cc91cca | 7 | unsigned int flont1:1; |
Ryosei | 0:a1405cc91cca | 8 | unsigned int flont2:1; |
Ryosei | 0:a1405cc91cca | 9 | unsigned int flont3:1; |
Ryosei | 0:a1405cc91cca | 10 | unsigned int flont4:1; |
Ryosei | 0:a1405cc91cca | 11 | unsigned int flont5:1; |
Ryosei | 0:a1405cc91cca | 12 | unsigned int flont6:1; |
Ryosei | 0:a1405cc91cca | 13 | unsigned int back1:1; |
Ryosei | 0:a1405cc91cca | 14 | unsigned int back2:1; |
Ryosei | 0:a1405cc91cca | 15 | unsigned int back3:1; |
Ryosei | 0:a1405cc91cca | 16 | unsigned int back4:1; |
Ryosei | 0:a1405cc91cca | 17 | unsigned int back5:1; |
Ryosei | 0:a1405cc91cca | 18 | unsigned int back6:1; |
Ryosei | 0:a1405cc91cca | 19 | unsigned int left1:1; |
Ryosei | 0:a1405cc91cca | 20 | unsigned int left2:1; |
Ryosei | 0:a1405cc91cca | 21 | unsigned int left3:1; |
Ryosei | 0:a1405cc91cca | 22 | unsigned int left4:1; |
Ryosei | 0:a1405cc91cca | 23 | unsigned int left5:1; |
Ryosei | 0:a1405cc91cca | 24 | unsigned int left6:1; |
Ryosei | 0:a1405cc91cca | 25 | unsigned int right1:1; |
Ryosei | 0:a1405cc91cca | 26 | unsigned int right2:1; |
Ryosei | 0:a1405cc91cca | 27 | unsigned int right3:1; |
Ryosei | 0:a1405cc91cca | 28 | unsigned int right4:1; |
Ryosei | 0:a1405cc91cca | 29 | unsigned int right5:1; |
Ryosei | 0:a1405cc91cca | 30 | unsigned int right6:1; |
Ryosei | 0:a1405cc91cca | 31 | unsigned int center1:1; |
Ryosei | 0:a1405cc91cca | 32 | unsigned int center2:1; |
Ryosei | 0:a1405cc91cca | 33 | unsigned int center3:1; |
Ryosei | 0:a1405cc91cca | 34 | unsigned int center4:1; |
Ryosei | 0:a1405cc91cca | 35 | unsigned int center5:1; |
Ryosei | 0:a1405cc91cca | 36 | unsigned int center6:1; |
Ryosei | 0:a1405cc91cca | 37 | unsigned int center7:1; |
Ryosei | 0:a1405cc91cca | 38 | unsigned int center8:1; |
Ryosei | 0:a1405cc91cca | 39 | }; |
Ryosei | 0:a1405cc91cca | 40 | struct linedata Linedata; |
Ryosei | 0:a1405cc91cca | 41 | */ |
Ryosei | 0:a1405cc91cca | 42 | void lineread(char buf[6]) |
Ryosei | 0:a1405cc91cca | 43 | { |
Ryosei | 0:a1405cc91cca | 44 | if(linehubuart.readable()) { |
Ryosei | 0:a1405cc91cca | 45 | for(int i=0; i<=5; i++) { |
Ryosei | 0:a1405cc91cca | 46 | buf[i]=linehubuart.getc(); |
Ryosei | 0:a1405cc91cca | 47 | } |
Ryosei | 0:a1405cc91cca | 48 | } |
Ryosei | 0:a1405cc91cca | 49 | } |
Ryosei | 0:a1405cc91cca | 50 | |
Ryosei | 0:a1405cc91cca | 51 | void linedatacontrol(char buf[6],bool sentaku[48]) |
Ryosei | 0:a1405cc91cca | 52 | { |
Ryosei | 0:a1405cc91cca | 53 | for(int i=0; i<=47; i++) { |
Ryosei | 0:a1405cc91cca | 54 | if(i<=7) { |
Ryosei | 0:a1405cc91cca | 55 | sentaku[i]=((buf[0] << i) & 0b10000000)>>7; |
Ryosei | 0:a1405cc91cca | 56 | } else if(i<=15) { |
Ryosei | 0:a1405cc91cca | 57 | sentaku[i]=((buf[1] << i-8) & 0b10000000)>>7; |
Ryosei | 0:a1405cc91cca | 58 | } else if(i<=23) { |
Ryosei | 0:a1405cc91cca | 59 | sentaku[i]=((buf[2] << i-16) & 0b10000000)>>7; |
Ryosei | 0:a1405cc91cca | 60 | } else if(i<=31) { |
Ryosei | 0:a1405cc91cca | 61 | sentaku[i]=((buf[3] << i-24) & 0b10000000)>>7; |
Ryosei | 0:a1405cc91cca | 62 | } else if(i<=39) { |
Ryosei | 0:a1405cc91cca | 63 | sentaku[i]=((buf[4] << i-32) & 0b10000000)>>7; |
Ryosei | 0:a1405cc91cca | 64 | } else if(i<=39) { |
Ryosei | 0:a1405cc91cca | 65 | sentaku[i]=((buf[5] << i-40) & 0b10000000)>>7; |
Ryosei | 0:a1405cc91cca | 66 | } |
Ryosei | 0:a1405cc91cca | 67 | } |
Ryosei | 0:a1405cc91cca | 68 | } |
Ryosei | 0:a1405cc91cca | 69 | bool sinri[48]; |
Ryosei | 0:a1405cc91cca | 70 | char data[6]; |
Ryosei | 0:a1405cc91cca | 71 | DigitalOut LED(D3); |
Ryosei | 0:a1405cc91cca | 72 | int main() |
Ryosei | 0:a1405cc91cca | 73 | { |
Ryosei | 0:a1405cc91cca | 74 | pc.baud(38400); |
Ryosei | 0:a1405cc91cca | 75 | linehubuart.baud(38400); |
Ryosei | 0:a1405cc91cca | 76 | for(int i=0; i<=47; i++) { |
Ryosei | 0:a1405cc91cca | 77 | sinri[i]=0; |
Ryosei | 0:a1405cc91cca | 78 | } |
Ryosei | 0:a1405cc91cca | 79 | while(1) { |
Ryosei | 0:a1405cc91cca | 80 | LED=0; |
Ryosei | 0:a1405cc91cca | 81 | lineread(data); |
Ryosei | 0:a1405cc91cca | 82 | |
Ryosei | 0:a1405cc91cca | 83 | linedatacontrol(data,sinri); |
Ryosei | 0:a1405cc91cca | 84 | |
Ryosei | 0:a1405cc91cca | 85 | for(int i=0; i<=47; i++) { |
Ryosei | 0:a1405cc91cca | 86 | pc.printf("%d",sinri[i]); |
Ryosei | 0:a1405cc91cca | 87 | } |
Ryosei | 0:a1405cc91cca | 88 | pc.printf("\n"); |
Ryosei | 0:a1405cc91cca | 89 | } |
Ryosei | 0:a1405cc91cca | 90 | } |