//HMC5883L 使用 3軸 デジタル・コンパス モジュール (3-5V 動作) #include #include #include Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345); void setup(void) { Serial.begin(9600); while (!Serial) {} if(!mag.begin()) { //Serial.println("Ooops, no HMC5883 detected ... Check your wiring!"); while(1); } sensor_t sensor; while (Serial.available() <= 0) { Serial.println("0,0,0"); // send an initial string delay(300); } } void loop(void) { /* Get a new sensor event */ sensors_event_t event; mag.getEvent(&event); if (Serial.available() > 0) { float x=event.magnetic.x; float y=event.magnetic.y; float z=event.magnetic.z; float r=sqrt(x*x+y*y+z*z)-73.0; float heading_y = atan2(z,x) + 1.43; float heading_z = atan2(y,x) -1.36; if(heading_y < -PI)heading_y += 2*PI; if(heading_z < -PI)heading_z += 2*PI; if(heading_y > PI)heading_y -= 2*PI; if(heading_z > PI)heading_z -= 2*PI; Serial.print(heading_y); Serial.print(","); Serial.print(heading_z); Serial.print(","); Serial.print(r); Serial.print("\r\n"); delay(100); } }