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");
}