ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。
Dependencies: ACM1602NI Ping mbed-rtos mbed
Diff: I2C_Master.h
- Revision:
- 0:27bf77b6ec71
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/I2C_Master.h Mon Mar 10 07:56:41 2014 +0000 @@ -0,0 +1,60 @@ +// 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; +} + + + + + + + + + + + + + + +