ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。
Dependencies: ACM1602NI Ping mbed-rtos mbed
HMC6352.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 | |
denden | 0:27bf77b6ec71 | 2 | |
denden | 0:27bf77b6ec71 | 3 | |
denden | 0:27bf77b6ec71 | 4 | |
denden | 0:27bf77b6ec71 | 5 | // 基準角度を求める |
denden | 0:27bf77b6ec71 | 6 | void COMPASS_RESET(void) { |
denden | 0:27bf77b6ec71 | 7 | Compass_mode[0] = 0x47; |
denden | 0:27bf77b6ec71 | 8 | Compass_mode[1] = 0x74; |
denden | 0:27bf77b6ec71 | 9 | Compass_mode[2] = 0x72; |
denden | 0:27bf77b6ec71 | 10 | I2C_mbed.write(compass_addr, Compass_mode, 3); |
denden | 0:27bf77b6ec71 | 11 | |
denden | 0:27bf77b6ec71 | 12 | float compass = 0.0; |
denden | 0:27bf77b6ec71 | 13 | for (int i=0; i<10; i++) { |
denden | 0:27bf77b6ec71 | 14 | val = I2C_mbed.read(compass_addr, Compass_mode, 2); |
denden | 0:27bf77b6ec71 | 15 | if(!val) led4 = 1; |
denden | 0:27bf77b6ec71 | 16 | compass += 0.1 * ((Compass_mode[0] << 8) + Compass_mode[1]); |
denden | 0:27bf77b6ec71 | 17 | } |
denden | 0:27bf77b6ec71 | 18 | Compass_Base = compass / 10.0; |
denden | 0:27bf77b6ec71 | 19 | lcd.locate(0, 1); lcd.printf("%5.1f", Compass_Base); |
denden | 0:27bf77b6ec71 | 20 | } |
denden | 0:27bf77b6ec71 | 21 | |
denden | 0:27bf77b6ec71 | 22 | |
denden | 0:27bf77b6ec71 | 23 | |
denden | 0:27bf77b6ec71 | 24 | |
denden | 0:27bf77b6ec71 | 25 | |
denden | 0:27bf77b6ec71 | 26 | // 現在の向いている方向を求める |
denden | 0:27bf77b6ec71 | 27 | void COMPASS(void) { |
denden | 0:27bf77b6ec71 | 28 | Compass = 0.0; |
denden | 0:27bf77b6ec71 | 29 | val = I2C_mbed.read(compass_addr, Compass_mode, 2); |
denden | 0:27bf77b6ec71 | 30 | Compass = 0.1 * ((Compass_mode[0] << 8) + Compass_mode[1]); |
denden | 0:27bf77b6ec71 | 31 | Compass -= Compass_Base; |
denden | 0:27bf77b6ec71 | 32 | |
denden | 0:27bf77b6ec71 | 33 | if (Compass >= 180.0) Compass -= 360.0; |
denden | 0:27bf77b6ec71 | 34 | if (Compass < -180.0) Compass += 360.0; |
denden | 0:27bf77b6ec71 | 35 | |
denden | 0:27bf77b6ec71 | 36 | if(!val)led1 = 1; else led1 = 0; |
denden | 0:27bf77b6ec71 | 37 | } |
denden | 0:27bf77b6ec71 | 38 | |
denden | 0:27bf77b6ec71 | 39 | |
denden | 0:27bf77b6ec71 | 40 | |
denden | 0:27bf77b6ec71 | 41 | |
denden | 0:27bf77b6ec71 | 42 |