ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。
Dependencies: ACM1602NI Ping mbed-rtos mbed
HMC6352.h
- Committer:
- denden
- Date:
- 2014-03-10
- Revision:
- 0:27bf77b6ec71
File content as of revision 0:27bf77b6ec71:
// 基準角度を求める void COMPASS_RESET(void) { Compass_mode[0] = 0x47; Compass_mode[1] = 0x74; Compass_mode[2] = 0x72; I2C_mbed.write(compass_addr, Compass_mode, 3); float compass = 0.0; for (int i=0; i<10; i++) { val = I2C_mbed.read(compass_addr, Compass_mode, 2); if(!val) led4 = 1; compass += 0.1 * ((Compass_mode[0] << 8) + Compass_mode[1]); } Compass_Base = compass / 10.0; lcd.locate(0, 1); lcd.printf("%5.1f", Compass_Base); } // 現在の向いている方向を求める void COMPASS(void) { Compass = 0.0; val = I2C_mbed.read(compass_addr, Compass_mode, 2); Compass = 0.1 * ((Compass_mode[0] << 8) + Compass_mode[1]); Compass -= Compass_Base; if (Compass >= 180.0) Compass -= 360.0; if (Compass < -180.0) Compass += 360.0; if(!val)led1 = 1; else led1 = 0; }