ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。
Dependencies: ACM1602NI Ping mbed-rtos mbed
I2C_Master.h@0:27bf77b6ec71, 2014-03-10 (annotated)
- 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?
User | Revision | Line number | New 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 |