ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。

Dependencies:   ACM1602NI Ping mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers I2C_Master.h Source File

I2C_Master.h

00001 // Master側プログラム
00002 
00003 
00004 
00005 
00006 
00007 // mbedSlaveとのI2C通信用プログラム
00008 // まず欲しいデータを教えてから、欲しいデータを受け取る
00009 void MBED_PING(void) {
00010     val = I2C_mbed.write(mbed_slave, Order+0, 1);   // PINGデータを要求
00011     val = I2C_mbed.read(mbed_slave, Rec, 4);        // PINGデータを受信
00012     PING_F = Rec[0];
00013     PING_R = Rec[1];
00014     PING_B = Rec[2];
00015     PING_L = Rec[3];
00016     if(!val)led2 = 1;   else led2 = 0;
00017 }
00018 
00019 
00020 void MBED_IR(void) {
00021     val = I2C_mbed.write(mbed_slave, Order+1, 1);       // IRデータを要求
00022     val = I2C_mbed.read(mbed_slave, Rec, 4);            // IRデータを受信
00023     Angle = Rec[0] + Rec[1];    // 進行方向
00024     Speed = (float)(Rec[2]) / 100.00000;        // 速度
00025     BallCheck = Rec[3];         // ボール保持
00026     if(!val) led2 = 1;   else led2 = 0;
00027 }
00028 
00029 
00030 void MBED_LCD(void) {
00031     val = I2C_mbed.write(mbed_slave, Order+2, 1);       // LCDデータを要求
00032     val = I2C_mbed.read(mbed_slave, Rec, 17);           // LCDデータを受信
00033     lcd.printf("%s\n", Rec);
00034     if(!val)led2 = 1;   else led2 = 0;
00035 }
00036 
00037 
00038 
00039 
00040 
00041 void MBED_MODE(void) {
00042     val = I2C_mbed.write(mbed_slave, Order+3, 1);       // modeデータを要求
00043     val = I2C_mbed.read(mbed_slave, Mode, 1);           // modeデータを受信
00044     if(!val)led2 = 1;   else led2 = 0;
00045 }
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060