# TCA9548A compatibilità con wemos d1 mini o esp32

**URL:** <https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104>\
**Category:** Generale\
**Created:** [November 3, 2024, 2:18pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104 "2024-11-03T14:18:14Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![minixium](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/minixium/32/919306_2.png) [@minixium](https://forum.arduino.cc/u/minixium)\
**Post date:** [November 3, 2024, 2:18pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/1 "2024-11-03T14:18:14Z")

</div>

Buongiorno, ho questo multiplexer x  
con protocollo i2c per effettuare letture da sensori bme280, ma quando avvio il programma dopo la prima lettura va in eccezione per poi riavviarsi .  
Ho fatto dei test con un wemos d1 mini e con un esp 32 ma nulla , qualcuno si è imbattuto in questo problema.

Allego programma

1. /\*\*\*\*\*\*\*\*\*

- [TCA9548A I2C Multiplexer: ESP32, ESP8266, Arduino | Random Nerd Tutorials](https://randomnerdtutorials.com/tca9548a-i2c-multiplexer-esp32-esp8266-arduino/?unapproved=979775&moderation-hash=ede1e30c1ce4100dada0d6d880786385#comment-979775)

```arduino

* #include <Wire.h>

6. #include <Adafruit_Sensor.h>

7. #include <Adafruit_BME280.h>

* #define SEALEVELPRESSURE_HPA (1022)

* Adafruit_BME280 bme1; // I2C

8. //Adafruit_BME280 bme2; // I2C

9. //Adafruit_BME280 bme3; // I2C

10. Adafruit_BME280 bme4; // I2C

* // Select I2C BUS

11. void TCA9548A(uint8_t bus){

12. Wire.beginTransmission(0x70); // TCA9548A address

13. Wire.write(1 << bus); // send byte to select bus

14. Wire.endTransmission();

15. }

* void printValues(Adafruit_BME280 bme, int bus) {

16. TCA9548A (bus);

17. Serial.print("Sensor number on bus");

18. Serial.println(bus);

19. Serial.print("Temperature = ");

20. Serial.print(bme.readTemperature());

21. Serial.println(" *C");

* Serial.print("Pressure = ");

22. Serial.print(bme.readPressure() / 100.0F);

23. Serial.println(" hPa");

* Serial.print("Approx. Altitude = ");

24. Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));

25. Serial.println(" m");

* Serial.print("Humidity = ");

26. Serial.print(bme.readHumidity());

27. Serial.println(" %");

* Serial.println();

28. }

* void setup() {

29. Serial.begin(115200);

* // Start I2C communication with the Multiplexer

30. Wire.begin();

* // Init sensor on bus number 2

31. TCA9548A(2);

32. if (!bme1.begin(0x76)) {

33. Serial.println("Could not find a valid BME280 sensor on bus 2, check wiring!2");

34. while (1);

35. }

36. Serial.println();

37. /*

38. // Init sensor on bus number 3

39. TCA9548A(3);

40. if (!bme2.begin(0x76)) {

41. Serial.println("Could not find a valid BME280 sensor on bus 2, check wiring!");

42. while (1);

43. }

44. Serial.println();

* // Init sensor on bus number 4

45. TCA9548A(4);

46. if (!bme3.begin(0x76)) {

47. Serial.println("Could not find a valid BME280 sensor on bus 2, check wiring!");

48. while (1);

49. }

50. Serial.println();

51. */

52. // Init sensor on bus number 5

53. TCA9548A(5);

54. if (!bme4.begin(0x76)) {

55. Serial.println("Could not find a valid BME280 sensor on bus 2, check wiring!5");

56. while (1);

57. }

58. Serial.println();

59. }

* void loop() {

60. //Print values for sensor 1

61. printValues(bme1, 2);

62. // printValues(bme2, 3);

63. //printValues(bme3, 4);

64. printValues(bme4, 5);

65. delay(5000);

66. }

```

---

<div class="post-metadata">

**Author:** ![sterretje](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/sterretje/32/391294_2.png) [@sterretje](https://forum.arduino.cc/u/sterretje)\
**Post date:** [November 3, 2024, 3:24pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/2 "2024-11-03T15:24:34Z")

</div>

Si prega di utilizzare la lingua inglese nella parte inglese del forum. La domanda è stata spostata nella parte italiana del forum.

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [November 3, 2024, 4:13pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/3 "2024-11-03T16:13:44Z")

</div>

@minixium:

⚠  
Ti segnalo che, nella sezione in lingua **Inglese** , si può scrivere **SOLO** in **Inglese**... quindi, per favore, la prossima volta **presta più attenzione** in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella [sezione di lingua Italiana](https://forum.arduino.cc/c/international/italiano/50) ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

P.S.: Attenzione, non è la prima volta che la cosa succede ... Al ripetersi l'account potrebbe venir sospeso.

---

<div class="post-metadata">

**Author:** ![minixium](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/minixium/32/919306_2.png) [@minixium](https://forum.arduino.cc/u/minixium)\
**Post date:** [November 3, 2024, 7:07pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/4 "2024-11-03T19:07:16Z")

</div>

Mi scuso per la disattenzione, solo che ho messo il traduttore in lingua originale non soffermandomi se ero nella sezione giusta

---

<div class="post-metadata">

**Author:** ![cotestatnt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cotestatnt/32/238781_2.png) [@cotestatnt](https://forum.arduino.cc/u/cotestatnt)\
**Post date:** [November 4, 2024, 8:36am UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/5 "2024-11-04T08:36:20Z")

</div>

Se vuoi che qualcuno ti dia una mano con il tuo codice, devi rendergli la cosa semplice.  
Il tuo codice formattato in questo modo e con i numeri di riga all'inizio è praticamene illegibile.

Comunque il problema dovrebbe essere nella funzione `void printValues(Adafruit_BME280 bme, int bus)` dove hai definito come primo parametro una copia dell'istanza della classe `Adafruit_BME280` mentre poi in realtà passi alla funzione istanze già definite (bme1 e bme4).  
Non puoi fare in questo modo, ma devi passare un puntatore all'istanza di Adafruit\_BME280 o in alternativa puoi passare l'argomento per riferimento invece che per valore.

`void printValues(Adafruit_BME280 & bme, int bus)`

Questo il codice formattato e senza numeri di riga:

```arduino
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1022)

Adafruit_BME280 bme1; // Sensore BME280 su I2C
Adafruit_BME280 bme4; // Sensore BME280 su I2C

// Seleziona il bus I2C sul TCA9548A
void TCA9548A(uint8_t bus) {
  Wire.beginTransmission(0x70); // Indirizzo del TCA9548A
  Wire.write(1 << bus); // Seleziona il bus
  Wire.endTransmission();
}

// Stampa i valori letti dal sensore BME280
void printValues(Adafruit_BME280 &bme, int bus) {
  TCA9548A(bus);
  Serial.print("Sensore sul bus ");
  Serial.println(bus);
  
  Serial.print("Temperatura = ");
  Serial.print(bme.readTemperature());
  Serial.println(" °C");

  Serial.print("Pressione = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Altitudine approssimativa = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Umidità = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

void setup() {
  Serial.begin(115200);
  Wire.begin();

  // Inizializza il sensore BME280 sul bus 2
  TCA9548A(2);
  if (!bme1.begin(0x76)) {
    Serial.println("Impossibile trovare un sensore BME280 valido sul bus 2, controlla il cablaggio!");
    while (1);
  }

  // Inizializza il sensore BME280 sul bus 5
  TCA9548A(5);
  if (!bme4.begin(0x76)) {
    Serial.println("Impossibile trovare un sensore BME280 valido sul bus 5, controlla il cablaggio!");
    while (1);
  }

  Serial.println();
}

void loop() {
  printValues(bme1, 2);
  printValues(bme4, 5);
  delay(5000);
}

```

---

<div class="post-metadata">

**Author:** ![minixium](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/minixium/32/919306_2.png) [@minixium](https://forum.arduino.cc/u/minixium)\
**Post date:** [November 4, 2024, 1:08pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/6 "2024-11-04T13:08:03Z")

</div>

Ciao grazie per avermi risposto , spero di trovarmi nella giusta sezione "lingua Italiana , perchè non sono riuscito a capire ......  
Comunque ho corretto quella routine me l'errore persiste

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [November 4, 2024, 1:35pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/7 "2024-11-04T13:35:57Z")

</div>

> [@minixium](#):
>
> spero di trovarmi nella giusta sezione "lingua Italiana

Perdona, ma nel mio post ti ho dato il link diretto alla sezione Italiana del forum ... Perché non te lo memorizzo così ci arrivi direttamente? 🙂

Guglielmo

---

<div class="post-metadata">

**Author:** ![cotestatnt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cotestatnt/32/238781_2.png) [@cotestatnt](https://forum.arduino.cc/u/cotestatnt)\
**Post date:** [November 4, 2024, 1:53pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/8 "2024-11-04T13:53:02Z")

</div>

Prova a mettere il messaggio di errore che ottieni.

---

<div class="post-metadata">

**Author:** ![minixium](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/minixium/32/919306_2.png) [@minixium](https://forum.arduino.cc/u/minixium)\
**Post date:** [November 4, 2024, 3:00pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/9 "2024-11-04T15:00:43Z")

</div>

Ciao cotestatnt , rivisto attentamente tutto il tuo codice ma mi continuava a dare errore , riavviato il tutto e ti posso finalmente dire che funziona , ti ringrazio , quindi l'errore era dovuto che i 2 bme1 e bme4 erano già instanziati ?  
Per mia conoscenza dove posso vedere qualche esempio per capire i puntatori o i passaggi di argomento o riferimento

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 3, 2025, 3:01pm UTC](https://forum.arduino.cc/t/tca9548a-compatibilita-con-wemos-d1-mini-o-esp32/1318104/10 "2025-05-03T15:01:29Z")

</div>

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
