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

コード置き場(M5 AtomS3 Lite+Ambient Light Unit)

https://simblo.net/u/bdynFG/post/143923からリンク。投稿先ではコードブロックの処理がエラーになるので投稿できなかったため。


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

M5_DLight sensor;
uint16_t lux;

void setup() {
    AtomS3.begin(true);
    AtomS3.dis.setBrightness(100); // set brightness: 0~255, default:100 
    //Serial.begin(9600);
    //Serial.println("Sensor begin.....");
    USBSerial.begin(9600);
    USBSerial.println("Sensor begin.....");
    sensor.begin(&Wire, (uint8_t)2, (uint8_t)1);    // I2Cの割り当てピンの設定。SDA=2, SDL=1に設定する。デフォルトSDA=38, SDL=39らしい。
    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() {
    lux = sensor.getLUX();
    sprintf(info, "lux: %d", lux);
    // luxが100を超えたら、LEDを白点灯、それより下なら青点灯。
    if ( lux > 100 ) {
        AtomS3.dis.drawpix(dispColor( 255, 255, 255)); // WHITE
    } else {
        AtomS3.dis.drawpix(dispColor( 0, 0, 255)); // BLUE
    }
    AtomS3.update();
    USBSerial.println(info);    // 現在のlux値をUSBシリアルポートに出力。
    delay(500);
}