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: ds3_si mbed omuni solenoid
Fork of 2017_Robocon_mother by
main.cpp@7:c24e61f00404, 2017-10-16 (annotated)
- Committer:
- gaku_sigu
- Date:
- Mon Oct 16 11:12:46 2017 +0000
- Revision:
- 7:c24e61f00404
- Parent:
- 6:f5f0b60cd380
- Child:
- 8:030080071a4a
2017/10/16 ???
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gaku_sigu | 0:f2830b957dea | 1 | #include "mbed.h" |
gaku_sigu | 1:88d73fd8099a | 2 | #include "omuni.h" |
gaku_sigu | 1:88d73fd8099a | 3 | #include "solenoid.h" |
gaku_sigu | 0:f2830b957dea | 4 | |
gaku_sigu | 5:d5aa02f1acbb | 5 | //#define DEBUG |
gaku_sigu | 5:d5aa02f1acbb | 6 | |
gaku_sigu | 6:f5f0b60cd380 | 7 | #define CON_OFFSET 15 |
gaku_sigu | 6:f5f0b60cd380 | 8 | |
gaku_sigu | 0:f2830b957dea | 9 | I2C i2c(p28, p27); |
gaku_sigu | 3:2d189409c3c3 | 10 | omuni omu(&i2c, 0x10, 0x14, 0x16); |
gaku_sigu | 3:2d189409c3c3 | 11 | solenoid sol(&i2c, 0x20); |
gaku_sigu | 0:f2830b957dea | 12 | |
gaku_sigu | 0:f2830b957dea | 13 | Serial con(p9, p10); |
gaku_sigu | 0:f2830b957dea | 14 | Serial master(p13,p14); |
gaku_sigu | 0:f2830b957dea | 15 | Serial pc(USBTX, USBRX); |
gaku_sigu | 0:f2830b957dea | 16 | |
gaku_sigu | 7:c24e61f00404 | 17 | BusOut serialsel(p19,p20,LED1,LED2); |
gaku_sigu | 6:f5f0b60cd380 | 18 | Timer serialtimer; |
gaku_sigu | 7:c24e61f00404 | 19 | Ticker readtimer; |
gaku_sigu | 6:f5f0b60cd380 | 20 | |
gaku_sigu | 5:d5aa02f1acbb | 21 | char ConData[2][12]; |
gaku_sigu | 6:f5f0b60cd380 | 22 | char offset[4]; |
gaku_sigu | 1:88d73fd8099a | 23 | |
gaku_sigu | 7:c24e61f00404 | 24 | void mbedreset() |
gaku_sigu | 7:c24e61f00404 | 25 | { |
gaku_sigu | 7:c24e61f00404 | 26 | NVIC_SystemReset(); |
gaku_sigu | 7:c24e61f00404 | 27 | } |
gaku_sigu | 7:c24e61f00404 | 28 | |
gaku_sigu | 0:f2830b957dea | 29 | void GetData() |
gaku_sigu | 0:f2830b957dea | 30 | { |
gaku_sigu | 7:c24e61f00404 | 31 | readtimer.attach(&mbedreset, 1); |
gaku_sigu | 6:f5f0b60cd380 | 32 | static bool main_flag = 1 ; |
gaku_sigu | 1:88d73fd8099a | 33 | if ( con.getc() == 'H' ) { |
gaku_sigu | 0:f2830b957dea | 34 | ConData[0][0] = 'H'; |
gaku_sigu | 0:f2830b957dea | 35 | for (int i = 1; i < 12; i++) |
gaku_sigu | 0:f2830b957dea | 36 | { |
gaku_sigu | 0:f2830b957dea | 37 | char t = (char)con.getc(); |
gaku_sigu | 0:f2830b957dea | 38 | ConData[0][i] = t; |
gaku_sigu | 0:f2830b957dea | 39 | } |
gaku_sigu | 0:f2830b957dea | 40 | for (int i = 0; i < 12; i++) |
gaku_sigu | 0:f2830b957dea | 41 | { |
gaku_sigu | 0:f2830b957dea | 42 | char t = (char)con.getc(); |
gaku_sigu | 0:f2830b957dea | 43 | ConData[1][i] = t; |
gaku_sigu | 0:f2830b957dea | 44 | } |
gaku_sigu | 1:88d73fd8099a | 45 | for(int i = 0; i < 12; i++) |
gaku_sigu | 1:88d73fd8099a | 46 | { |
gaku_sigu | 1:88d73fd8099a | 47 | master.putc(ConData[0][i]); |
gaku_sigu | 1:88d73fd8099a | 48 | } |
gaku_sigu | 1:88d73fd8099a | 49 | for(int i = 0; i < 12; i++) |
gaku_sigu | 1:88d73fd8099a | 50 | { |
gaku_sigu | 1:88d73fd8099a | 51 | master.putc(ConData[1][i]); |
gaku_sigu | 1:88d73fd8099a | 52 | } |
gaku_sigu | 6:f5f0b60cd380 | 53 | if(main_flag) |
gaku_sigu | 6:f5f0b60cd380 | 54 | { |
gaku_sigu | 6:f5f0b60cd380 | 55 | offset[0] = ConData[0][1]; |
gaku_sigu | 6:f5f0b60cd380 | 56 | offset[1] = ConData[0][2]; |
gaku_sigu | 6:f5f0b60cd380 | 57 | offset[2] = ConData[1][1]; |
gaku_sigu | 6:f5f0b60cd380 | 58 | offset[3] = ConData[1][2]; |
gaku_sigu | 7:c24e61f00404 | 59 | serialtimer.start(); |
gaku_sigu | 6:f5f0b60cd380 | 60 | main_flag = 0; |
gaku_sigu | 6:f5f0b60cd380 | 61 | } |
gaku_sigu | 6:f5f0b60cd380 | 62 | ConData[0][1] -= offset[0]; |
gaku_sigu | 6:f5f0b60cd380 | 63 | ConData[0][2] -= offset[1]; |
gaku_sigu | 6:f5f0b60cd380 | 64 | ConData[1][1] -= offset[2]; |
gaku_sigu | 6:f5f0b60cd380 | 65 | ConData[1][2] -= offset[3]; |
gaku_sigu | 6:f5f0b60cd380 | 66 | |
gaku_sigu | 6:f5f0b60cd380 | 67 | if( (char)255 - CON_OFFSET < ConData[1][1] || ConData[1][1] < CON_OFFSET) |
gaku_sigu | 6:f5f0b60cd380 | 68 | ConData[1][1] = 0; |
gaku_sigu | 7:c24e61f00404 | 69 | |
gaku_sigu | 7:c24e61f00404 | 70 | serialtimer.reset(); |
gaku_sigu | 0:f2830b957dea | 71 | } |
gaku_sigu | 7:c24e61f00404 | 72 | readtimer.detach(); |
gaku_sigu | 0:f2830b957dea | 73 | } |
gaku_sigu | 0:f2830b957dea | 74 | |
gaku_sigu | 7:c24e61f00404 | 75 | |
gaku_sigu | 0:f2830b957dea | 76 | int main() { |
gaku_sigu | 7:c24e61f00404 | 77 | serialsel = 0x05; |
gaku_sigu | 0:f2830b957dea | 78 | con.baud(115200); |
gaku_sigu | 0:f2830b957dea | 79 | master.baud(115200); |
gaku_sigu | 0:f2830b957dea | 80 | pc.baud(115200); |
gaku_sigu | 0:f2830b957dea | 81 | con.attach(&GetData,Serial::RxIrq); |
gaku_sigu | 0:f2830b957dea | 82 | |
gaku_sigu | 7:c24e61f00404 | 83 | serialtimer.stop(); |
gaku_sigu | 7:c24e61f00404 | 84 | serialtimer.reset(); |
gaku_sigu | 7:c24e61f00404 | 85 | |
gaku_sigu | 7:c24e61f00404 | 86 | pc.printf("start\n\n\n\n"); |
gaku_sigu | 7:c24e61f00404 | 87 | |
gaku_sigu | 0:f2830b957dea | 88 | while(1){ |
gaku_sigu | 0:f2830b957dea | 89 | |
gaku_sigu | 6:f5f0b60cd380 | 90 | char MotorData[] = {'H', ConData[0][1], ConData[0][2], ConData[1][1], ConData[1][2]}; |
gaku_sigu | 0:f2830b957dea | 91 | omu.out(MotorData); |
gaku_sigu | 5:d5aa02f1acbb | 92 | |
gaku_sigu | 5:d5aa02f1acbb | 93 | char soldata = ((ConData[0][3] << 2) + ConData[1][3]) << 4; |
gaku_sigu | 5:d5aa02f1acbb | 94 | sol = soldata; |
gaku_sigu | 7:c24e61f00404 | 95 | |
gaku_sigu | 7:c24e61f00404 | 96 | if(serialtimer.read_ms() > 500) |
gaku_sigu | 7:c24e61f00404 | 97 | { |
gaku_sigu | 7:c24e61f00404 | 98 | serialsel = ~serialsel; |
gaku_sigu | 7:c24e61f00404 | 99 | serialtimer.reset(); |
gaku_sigu | 7:c24e61f00404 | 100 | } |
gaku_sigu | 5:d5aa02f1acbb | 101 | |
gaku_sigu | 5:d5aa02f1acbb | 102 | #ifdef DEBUG |
gaku_sigu | 0:f2830b957dea | 103 | for(int i = 0; i < 12; i++) |
gaku_sigu | 0:f2830b957dea | 104 | { |
gaku_sigu | 1:88d73fd8099a | 105 | pc.printf("%3d ",ConData[0][i]); |
gaku_sigu | 0:f2830b957dea | 106 | } |
gaku_sigu | 0:f2830b957dea | 107 | for(int i = 0; i < 12; i++) |
gaku_sigu | 0:f2830b957dea | 108 | { |
gaku_sigu | 1:88d73fd8099a | 109 | pc.printf("%3d ",ConData[1][i]); |
gaku_sigu | 7:c24e61f00404 | 110 | } |
gaku_sigu | 1:88d73fd8099a | 111 | pc.printf("\n\r"); |
gaku_sigu | 3:2d189409c3c3 | 112 | |
gaku_sigu | 6:f5f0b60cd380 | 113 | for(int i = 0; i < 4; i++) |
gaku_sigu | 6:f5f0b60cd380 | 114 | { |
gaku_sigu | 6:f5f0b60cd380 | 115 | pc.printf("%3d ",offset[i]); |
gaku_sigu | 6:f5f0b60cd380 | 116 | } |
gaku_sigu | 6:f5f0b60cd380 | 117 | printf("\n"); |
gaku_sigu | 6:f5f0b60cd380 | 118 | |
gaku_sigu | 5:d5aa02f1acbb | 119 | printf("%d\n",soldata); |
gaku_sigu | 5:d5aa02f1acbb | 120 | #endif |
gaku_sigu | 1:88d73fd8099a | 121 | } |
gaku_sigu | 0:f2830b957dea | 122 | } |