Problemi interfacciamento sensori Pololu VL53L0X con TCS34725 e scheda Arduino UNO

Buongiorno a tutti!
Ho collegato un paio di sensori Pololu VL53L0X ed un sensore di colore TCS34725 ad una scheda Arduino UNO tramite una scheda Base Shield Grove v2 e relativi cavetti utilizzando ovviamente le connessioni I2C.
Purtroppo, una volta avviato lo sketch ricevo 65535 da entrambi VL53L0X mentre il TCS34725 sembra funzionare bene. Gli indirizzi I2c sono ok 0x31, 0x33 (sensori VL53L0X) e 0x29 (TCS3472). Alimentazione è 5V per tutti e tre i sensori.

Ho notato quanto segue:

  • scollegando inizialmente i cavetti 5V e 0V dal TCS3472 prima di avviare lo sketch, i sensori VL53L0X funzionano correttamente

  • i due sensori VL53L0X continuano a funzionare correttamente se collego i cavetti 5V e 0V al TCS3472 mentre lo sketch sta girando.

  • scollegando inizialmente il solo cavetto 0V dal TCS3472 prima di avviare lo sketch, viene rilevato correttamente il solo indirizzo I2C del TCS.

Quale potrebbe essere il problema?

#include <Wire.h>
#include <VL53L0X.h>
#include "Adafruit_TCS34725.h"

VL53L0X sensor1;
VL53L0X sensor2;

unsigned int dist1;
unsigned int dist2;
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_614MS, TCS34725_GAIN_1X);

void setup()
{
 
  Serial.begin (9600);
  tcs.begin();
  Wire.begin();
  Wire.setClock(400000);

  delay(100);
  pinMode(4, OUTPUT);//VL53L0x
  pinMode(6, OUTPUT);//VL53L0x
 
  digitalWrite(4, LOW);  delay(50);
  digitalWrite(6, LOW);  delay(50);

 
  pinMode(4, INPUT);
  delay(100);
  sensor1.init(true);
  sensor1.setAddress(0x31);
  sensor1.setTimeout(500);
  sensor1.startContinuous();
  delay(50);

  pinMode(6, INPUT);
  delay(100);
  sensor2.init(true);
  sensor2.setAddress(0x33);
  sensor2.setTimeout(500);
  sensor2.startContinuous();
  delay(50);
 

  i2cScanner();
}

void loop() {
  getDist();
  delay(500);
  RGB();
  delay(500);
}
void getDist() {
  dist1 = sensor1.readRangeContinuousMillimeters();
  dist2 = sensor2.readRangeContinuousMillimeters();
  Serial.print("dist1= ");  Serial.print(dist1);
  Serial.print(" / ");
  Serial.print("dist2= "); Serial.println(dist2);
}

void RGB() {
  float red, green, blue;
  tcs.getRGB(&red, &green, &blue);
  Serial.print("R:\t"); Serial.print(int(red));
  Serial.print("\tG:\t"); Serial.print(int(green));
  Serial.print("\tB:\t"); Serial.print(int(blue));
  Serial.print("\n");
}

Buongiorno,

essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto. :wink:

Mi scuso per aver posto un quesito senza essermi prima debitamente presentato e documentato sulle regole di questo forum. Ho inserito qualche informazione personale nel THREAD che mi avete indicato. Grazie anticipatamente per il supporto.

1 Like

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