Kiko Ishimoto / Mbed 2 deprecated sotuken_mother_2

Dependencies:   ds3_si mbed omuni solenoid

Fork of 2017_Robocon_mother by gaku takasawa

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?

UserRevisionLine numberNew 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 }