Outils pour utilisateurs

Outils du site


start:arduino:i2c:tca9548a

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
start:arduino:i2c:tca9548a [2024/04/15 13:18] – [Câblage et test Arduino] gerardadminstart:arduino:i2c:tca9548a [2024/04/15 13:23] – [Câblage et test Arduino] gerardadmin
Ligne 143: Ligne 143:
 </code> </code>
  
 +
 +
 +Par exemple, l'exécuter sur la configuration ci-dessus vous donnera :
 +
 +{{ :start:arduino:i2c:adafruit_products_untitled.png?direct&400 |}}
 +
 +
 +
 +Ensuite, vous devrez ajuster le code dont vous disposez pour sélectionner le bon port multiplexé !
 +
 +Assurez-vous avant d'interroger le capteur que vous appelez tcaselect pour obtenir le bon
 +
 +
 +<code c prog003.ino>
 +#include <Wire.h>
 +#include <Adafruit_Sensor.h>
 +#include <Adafruit_HMC5883_U.h>
 +
 +#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);
 +}
 +</code>
/home/chanteri/www/fablab37110/data/pages/start/arduino/i2c/tca9548a.txt · Dernière modification : 2024/04/15 13:25 de gerardadmin