#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "Adafruit_VEML7700.h"
#define TCAADDR 0x70
LiquidCrystal_I2C lcd(0x27, 20, 4);
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
char cstr[5];
void printNum(unsigned long n) {
sprintf(cstr, "%05d", n);
lcd.print(cstr);
}
Adafruit_VEML7700 sensors[4]={
Adafruit_VEML7700(),
Adafruit_VEML7700(),
Adafruit_VEML7700(),
Adafruit_VEML7700()
};
unsigned long res;
unsigned long minLight[4];
unsigned long maxLight[4];
void setup()
{
Wire.begin();
Serial.begin(115200);
lcd.init();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("---BOOT---");
delay(100);
lcd.backlight();
lcd.clear();
for (uint8_t t=0; t<4; t++) {
tcaselect(t);
lcd.setCursor(0,t);
lcd.print("TCA Port #"); lcd.print(t);
//sensors[t] = Adafruit_VEML7700();
if (sensors[t].begin()){
sensors[t].setGain(VEML7700_GAIN_1);
sensors[t].setIntegrationTime(VEML7700_IT_25MS);
lcd.print(" ok");
}else{
lcd.print(" !FAILED!");
}
minLight[t] = 99999;
maxLight[t] = 0;
}//end for loop
delay(1000);
lcd.clear();
for (uint8_t t=0; t<4; t++) {
lcd.setCursor(0,t); lcd.print(t+1);
delay(100);
}//end for loop
}
void loop()
{
for (uint8_t t=0; t<4; t++) {
tcaselect(t);
res = sensors[t].readLux();
lcd.setCursor(2,t); printNum(res);
if (res < minLight[t]) {minLight[t] = res; lcd.setCursor(8,t); printNum(minLight[t]);}
if (res > maxLight[t]) {maxLight[t] = res; lcd.setCursor(14,t); printNum(maxLight[t]);}
}//end for loop
}