Arduino入門
Air Quality SEN55 センサー関連の API とサンプルプログラム。
#include <M5Unified.h>
#include <Wire.h>
#include <SensirionI2CSen5x.h>
// SEN55 インスタンス
SensirionI2CSen5x sen5x;
void setup() {
// シリアルデバッグ
Serial.begin(115200);
// 画面を初期化
M5.begin();
M5.Display.clear(TFT_BLACK);
M5.Display.setTextSize(1);
M5.Display.setTextColor(TFT_WHITE, TFT_BLACK);
// I2C ピン (SDA=11, SCL=12)、データ取得済みの設定と同じ
Wire.begin(11, 12);
// AirQ 外部センサー有効化ピン、LOW を維持
pinMode(10, OUTPUT);
digitalWrite(10, LOW);
// SEN55 を初期化
sen5x.begin(Wire);
uint16_t err;
char msg[128];
err = sen5x.deviceReset();
if (err) {
errorToString(err, msg, sizeof(msg));
Serial.println("SEN55 リセットに失敗: " + String(msg));
}
// 測定を開始
err = sen5x.startMeasurement();
if (err) {
errorToString(err, msg, sizeof(msg));
Serial.println("SEN55 測定開始に失敗: " + String(msg));
}
}
void loop() {
// 1 秒ごとに読み取り
delay(1000);
float pm1, pm2_5, pm4, pm10, hum, temp, voc, nox;
uint16_t err = sen5x.readMeasuredValues(
pm1, pm2_5, pm4, pm10,
hum, temp,
voc, nox
);
// 画面をクリアしてカーソルをリセット
M5.Display.fillScreen(TFT_BLACK);
M5.Display.setCursor(10, 10);
if (err) {
// 読み取りエラー
M5.Display.setTextColor(TFT_RED, TFT_BLACK);
char em[64];
errorToString(err, em, sizeof(em));
M5.Display.printf("Read Error:\n%s", em);
} else {
// 各値を表示
M5.Display.setTextColor(TFT_WHITE, TFT_BLACK);
M5.Display.printf("PM1.0 : %.1f ug/m3\n", pm1);
M5.Display.printf("PM2.5 : %.1f ug/m3\n", pm2_5);
M5.Display.printf("PM4.0 : %.1f ug/m3\n", pm4);
M5.Display.printf("PM10 : %.1f ug/m3\n\n", pm10);
M5.Display.printf("Hum : %.1f %%\n", hum);
M5.Display.printf("Temp : %.1f C\n\n", temp);
M5.Display.printf("VOC : %.1f\n", voc);
M5.Display.printf("NOx : %.1f\n", nox);
}
// M5 イベントを更新(必須)
M5.update();
}
アップロード後、以下のような画面が表示されます: