#include #include #include #define TCAADDR 0x70 /* Assign a unique ID to this sensor at the same time */ Adafruit_HMC5883_Unified mag1 = Adafruit_HMC5883_Unified(1); Adafruit_HMC5883_Unified mag2 = Adafruit_HMC5883_Unified(2); void displaySensorDetails(Adafruit_HMC5883_Unified *mag) { sensor_t sensor; mag->getSensor(&sensor); Serial.println("------------------------------------"); Serial.print ("Sensor: "); Serial.println(sensor.name); Serial.print ("Driver Ver: "); Serial.println(sensor.version); Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id); Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" uT"); Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" uT"); Serial.print ("Resolution: "); Serial.print(sensor.resolution); Serial.println(" uT"); Serial.println("------------------------------------"); Serial.println(""); delay(500); } void tcaselect(uint8_t i) { if (i > 7) return; Wire.beginTransmission(TCAADDR); Wire.write(1 << i); Wire.endTransmission(); } void setup(void) { Serial.begin(9600); Serial.println("HMC5883 Magnetometer Test"); Serial.println(""); /* Initialise the 1st sensor */ tcaselect(2); if(!mag1.begin()) { /* There was a problem detecting the HMC5883 ... check your connections */ Serial.println("Ooops, no HMC5883 detected ... Check your wiring!"); while(1); } /* Initialise the 2nd sensor */ tcaselect(6); if(!mag2.begin()) { /* There was a problem detecting the HMC5883 ... check your connections */ Serial.println("Ooops, no HMC5883 detected ... Check your wiring!"); while(1); } /* Display some basic information on this sensor */ tcaselect(2); displaySensorDetails(&mag1); tcaselect(6); displaySensorDetails(&mag2); } void loop(void) { /* Get a new sensor event */ sensors_event_t event; tcaselect(2); mag1.getEvent(&event); /* Display the results (magnetic vector values are in micro-Tesla (uT)) */ Serial.print("Sensor #1 - "); Serial.print("X: "); Serial.print(event.magnetic.x); Serial.print(" "); Serial.print("Y: "); Serial.print(event.magnetic.y); Serial.print(" "); Serial.print("Z: "); Serial.print(event.magnetic.z); Serial.print(" ");Serial.println("uT"); tcaselect(6); mag2.getEvent(&event); /* Display the results (magnetic vector values are in micro-Tesla (uT)) */ Serial.print("Sensor #2 - "); Serial.print("X: "); Serial.print(event.magnetic.x); Serial.print(" "); Serial.print("Y: "); Serial.print(event.magnetic.y); Serial.print(" "); Serial.print("Z: "); Serial.print(event.magnetic.z); Serial.print(" ");Serial.println("uT"); delay(500); }