2024年11月18日月曜日

コード置き場(M5 AtomS3 Lite+Pa.HUB+Ambient Light Unit X 3)


#include <M5AtomS3.h>
#include <Wire.h>
#include <ClosedCube_TCA9548A.h>
#include <M5_DLight.h>

//Pa.HUBのアドレス:0x70~0x77
#define PaHub_I2C_ADDRESS 0x70
const int sensor_num = 3;
M5_DLight sensor;
uint16_t lux[sensor_num];
ClosedCube::Driver::I2CDevice i2c;
ClosedCube::Wired::TCA9548A tca9548a;

void setup() {
    AtomS3.begin(false);
    USBSerial.begin(9600);
    Wire.begin();
    Wire.setPins(2,1);  // SDA=2, SCL=1
    i2c = ClosedCube::Driver::I2CDevice(&Wire);
    tca9548a = ClosedCube::Wired::TCA9548A(i2c);

    //PaHubのアドレスを指定0x70~0x77
    tca9548a.address(PaHub_I2C_ADDRESS);

    //各チャンネルのセンサの初期化
    for(int i = 0; i < sensor_num; i++){
      tca9548a.selectChannel(i);
      sensor.begin(&Wire);  // SDA=2, SCL=1
      sensor.setMode(CONTINUOUSLY_H_RESOLUTION_MODE);
    }
}

char info[40];
CRGB dispColor( uint8_t r, uint8_t g, uint8_t b) {
return ( CRGB)( ( r << 16 ) | ( g << 8 ) | b);
}
void loop() {
    for ( int i = 0; i < sensor_num ; i++ ) {
        tca9548a.selectChannel(i);
        lux[i]  = sensor.getLUX();
    }
    sprintf(info, "lux[0]: %d, lux[1]: %d, lux[2]: %d", lux[0],lux[1],lux[2]);
    USBSerial.println(info);
    delay(500);
}