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

Dependencies:   ACM1602NI Ping mbed-rtos mbed

Committer:
denden
Date:
Mon Mar 10 07:56:41 2014 +0000
Revision:
0:27bf77b6ec71
????????????2014?????????????; ???????mbed?2????I2C????????; ???Master????; ; ??????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
denden 0:27bf77b6ec71 1 // Master側プログラム
denden 0:27bf77b6ec71 2
denden 0:27bf77b6ec71 3
denden 0:27bf77b6ec71 4
denden 0:27bf77b6ec71 5
denden 0:27bf77b6ec71 6
denden 0:27bf77b6ec71 7 // mbedSlaveとのI2C通信用プログラム
denden 0:27bf77b6ec71 8 // まず欲しいデータを教えてから、欲しいデータを受け取る
denden 0:27bf77b6ec71 9 void MBED_PING(void) {
denden 0:27bf77b6ec71 10 val = I2C_mbed.write(mbed_slave, Order+0, 1); // PINGデータを要求
denden 0:27bf77b6ec71 11 val = I2C_mbed.read(mbed_slave, Rec, 4); // PINGデータを受信
denden 0:27bf77b6ec71 12 PING_F = Rec[0];
denden 0:27bf77b6ec71 13 PING_R = Rec[1];
denden 0:27bf77b6ec71 14 PING_B = Rec[2];
denden 0:27bf77b6ec71 15 PING_L = Rec[3];
denden 0:27bf77b6ec71 16 if(!val)led2 = 1; else led2 = 0;
denden 0:27bf77b6ec71 17 }
denden 0:27bf77b6ec71 18
denden 0:27bf77b6ec71 19
denden 0:27bf77b6ec71 20 void MBED_IR(void) {
denden 0:27bf77b6ec71 21 val = I2C_mbed.write(mbed_slave, Order+1, 1); // IRデータを要求
denden 0:27bf77b6ec71 22 val = I2C_mbed.read(mbed_slave, Rec, 4); // IRデータを受信
denden 0:27bf77b6ec71 23 Angle = Rec[0] + Rec[1]; // 進行方向
denden 0:27bf77b6ec71 24 Speed = (float)(Rec[2]) / 100.00000; // 速度
denden 0:27bf77b6ec71 25 BallCheck = Rec[3]; // ボール保持
denden 0:27bf77b6ec71 26 if(!val) led2 = 1; else led2 = 0;
denden 0:27bf77b6ec71 27 }
denden 0:27bf77b6ec71 28
denden 0:27bf77b6ec71 29
denden 0:27bf77b6ec71 30 void MBED_LCD(void) {
denden 0:27bf77b6ec71 31 val = I2C_mbed.write(mbed_slave, Order+2, 1); // LCDデータを要求
denden 0:27bf77b6ec71 32 val = I2C_mbed.read(mbed_slave, Rec, 17); // LCDデータを受信
denden 0:27bf77b6ec71 33 lcd.printf("%s\n", Rec);
denden 0:27bf77b6ec71 34 if(!val)led2 = 1; else led2 = 0;
denden 0:27bf77b6ec71 35 }
denden 0:27bf77b6ec71 36
denden 0:27bf77b6ec71 37
denden 0:27bf77b6ec71 38
denden 0:27bf77b6ec71 39
denden 0:27bf77b6ec71 40
denden 0:27bf77b6ec71 41 void MBED_MODE(void) {
denden 0:27bf77b6ec71 42 val = I2C_mbed.write(mbed_slave, Order+3, 1); // modeデータを要求
denden 0:27bf77b6ec71 43 val = I2C_mbed.read(mbed_slave, Mode, 1); // modeデータを受信
denden 0:27bf77b6ec71 44 if(!val)led2 = 1; else led2 = 0;
denden 0:27bf77b6ec71 45 }
denden 0:27bf77b6ec71 46
denden 0:27bf77b6ec71 47
denden 0:27bf77b6ec71 48
denden 0:27bf77b6ec71 49
denden 0:27bf77b6ec71 50
denden 0:27bf77b6ec71 51
denden 0:27bf77b6ec71 52
denden 0:27bf77b6ec71 53
denden 0:27bf77b6ec71 54
denden 0:27bf77b6ec71 55
denden 0:27bf77b6ec71 56
denden 0:27bf77b6ec71 57
denden 0:27bf77b6ec71 58
denden 0:27bf77b6ec71 59
denden 0:27bf77b6ec71 60