ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。
Dependencies: ACM1602NI Ping mbed-rtos mbed
I2C_Master.h
- Committer:
- denden
- Date:
- 2014-03-10
- Revision:
- 0:27bf77b6ec71
File content as of revision 0:27bf77b6ec71:
// Master側プログラム // mbedSlaveとのI2C通信用プログラム // まず欲しいデータを教えてから、欲しいデータを受け取る void MBED_PING(void) { val = I2C_mbed.write(mbed_slave, Order+0, 1); // PINGデータを要求 val = I2C_mbed.read(mbed_slave, Rec, 4); // PINGデータを受信 PING_F = Rec[0]; PING_R = Rec[1]; PING_B = Rec[2]; PING_L = Rec[3]; if(!val)led2 = 1; else led2 = 0; } void MBED_IR(void) { val = I2C_mbed.write(mbed_slave, Order+1, 1); // IRデータを要求 val = I2C_mbed.read(mbed_slave, Rec, 4); // IRデータを受信 Angle = Rec[0] + Rec[1]; // 進行方向 Speed = (float)(Rec[2]) / 100.00000; // 速度 BallCheck = Rec[3]; // ボール保持 if(!val) led2 = 1; else led2 = 0; } void MBED_LCD(void) { val = I2C_mbed.write(mbed_slave, Order+2, 1); // LCDデータを要求 val = I2C_mbed.read(mbed_slave, Rec, 17); // LCDデータを受信 lcd.printf("%s\n", Rec); if(!val)led2 = 1; else led2 = 0; } void MBED_MODE(void) { val = I2C_mbed.write(mbed_slave, Order+3, 1); // modeデータを要求 val = I2C_mbed.read(mbed_slave, Mode, 1); // modeデータを受信 if(!val)led2 = 1; else led2 = 0; }