start:arduino:i2c:tca9548a
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| start:arduino:i2c:tca9548a [2024/04/15 13:14] – [Câblage et test Arduino] gerardadmin | start:arduino:i2c:tca9548a [2024/04/15 13:25] (Version actuelle) – gerardadmin | ||
|---|---|---|---|
| Ligne 43: | Ligne 43: | ||
| Référence Adafruit: ADA2717 | Référence Adafruit: ADA2717 | ||
| + | http:// | ||
| Son utilisation est assez simple : le multiplexeur lui-même est sur l' | Son utilisation est assez simple : le multiplexeur lui-même est sur l' | ||
| Ligne 75: | Ligne 76: | ||
| Nous vous suggérons d' | Nous vous suggérons d' | ||
| - | < code c prog001.ino> | + | <code c prog001.ino> |
| #définir TCAADDR 0x70 | #définir TCAADDR 0x70 | ||
| + | void tcaselect(uint8_t i) { | ||
| + | if (i > 7) return; | ||
| + | Wire.beginTransmission(TCAADDR); | ||
| + | Wire.write(1 << i); | ||
| + | Wire.endTransmission(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Vous pouvez ensuite appeler tcaselect(0) via tcaselect(7) pour configurer le multiplexeur. | ||
| + | |||
| + | Notez que si vous possédez des appareils I2C avec l' | ||
| + | |||
| + | |||
| + | <code c progr002.ino> | ||
| + | /** | ||
| + | * TCA9548 I2CScanner.ino -- I2C bus scanner for Arduino | ||
| + | * | ||
| + | * Based on https:// | ||
| + | * | ||
| + | */ | ||
| + | |||
| + | #include " | ||
| + | |||
| + | #define TCAADDR 0x70 | ||
| void tcaselect(uint8_t i) { | void tcaselect(uint8_t i) { | ||
| - | if (i > 7) return;< | + | if (i > 7) return; |
| - | < | + | |
| Wire.beginTransmission(TCAADDR); | Wire.beginTransmission(TCAADDR); | ||
| Wire.write(1 << i); | Wire.write(1 << i); | ||
| - | Wire.endTransmission(); | + | Wire.endTransmission(); |
| + | } | ||
| + | |||
| + | |||
| + | // standard Arduino setup() | ||
| + | void setup() | ||
| + | { | ||
| + | while (!Serial); | ||
| + | delay(1000); | ||
| + | |||
| + | Wire.begin(); | ||
| + | |||
| + | Serial.begin(115200); | ||
| + | Serial.println(" | ||
| + | |||
| + | for (uint8_t t=0; t<8; t++) { | ||
| + | tcaselect(t); | ||
| + | Serial.print(" | ||
| + | |||
| + | for (uint8_t addr = 0; addr< | ||
| + | if (addr == TCAADDR) continue; | ||
| + | |||
| + | Wire.beginTransmission(addr); | ||
| + | if (!Wire.endTransmission()) { | ||
| + | Serial.print(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | Serial.println(" | ||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | Par exemple, l' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | |||
| + | Ensuite, vous devrez ajuster le code dont vous disposez pour sélectionner le bon port multiplexé ! | ||
| + | |||
| + | Assurez-vous avant d' | ||
| + | |||
| + | |||
| + | <code c prog003.ino> | ||
| + | #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-> | ||
| + | Serial.println(" | ||
| + | Serial.print | ||
| + | Serial.print | ||
| + | Serial.print | ||
| + | Serial.print | ||
| + | Serial.print | ||
| + | Serial.print | ||
| + | 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(" | ||
| + | | ||
| + | /* Initialise the 1st sensor */ | ||
| + | tcaselect(2); | ||
| + | if(!mag1.begin()) | ||
| + | { | ||
| + | /* There was a problem detecting the HMC5883 ... check your connections */ | ||
| + | Serial.println(" | ||
| + | while(1); | ||
| + | } | ||
| + | | ||
| + | /* Initialise the 2nd sensor */ | ||
| + | tcaselect(6); | ||
| + | if(!mag2.begin()) | ||
| + | { | ||
| + | /* There was a problem detecting the HMC5883 ... check your connections */ | ||
| + | Serial.println(" | ||
| + | while(1); | ||
| + | } | ||
| + | | ||
| + | /* Display some basic information on this sensor */ | ||
| + | tcaselect(2); | ||
| + | displaySensorDetails(& | ||
| + | tcaselect(6); | ||
| + | displaySensorDetails(& | ||
| + | } | ||
| + | |||
| + | void loop(void) | ||
| + | { | ||
| + | /* Get a new sensor event */ | ||
| + | sensors_event_t event; | ||
| + | | ||
| + | tcaselect(2); | ||
| + | mag1.getEvent(& | ||
| + | |||
| + | /* Display the results (magnetic vector values are in micro-Tesla (uT)) */ | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | | ||
| + | tcaselect(6); | ||
| + | mag2.getEvent(& | ||
| + | /* Display the results (magnetic vector values are in micro-Tesla (uT)) */ | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | | ||
| + | delay(500); | ||
| + | } | ||
| + | </ | ||
/home/chanteri/www/fablab37110/data/attic/start/arduino/i2c/tca9548a.1713179661.txt.gz · Dernière modification : de gerardadmin
