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

Dependencies:   ACM1602NI Ping mbed-rtos mbed

Revision:
0:27bf77b6ec71
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HMC6352.h	Mon Mar 10 07:56:41 2014 +0000
@@ -0,0 +1,42 @@
+
+
+
+
+// 基準角度を求める
+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;
+}
+
+
+
+
+