ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。
Dependencies: ACM1602NI Ping mbed-rtos mbed
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
Generated on Mon Jul 18 2022 12:28:24 by 1.7.2