123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- Description: The screen will display TVOC and CO2.
- Note: SGP30 needs 15 seconds to initialize calibration after power on.
- */
- #include <M5Stack.h>
- #include "Adafruit_SGP30.h"
- Adafruit_SGP30 sgp;
- int i = 15;
- long last_millis = 0;
- void header(const char *string, uint16_t color)
- {
- M5.Lcd.fillScreen(color);
- M5.Lcd.setTextSize(1);
- M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);
- M5.Lcd.fillRect(0, 0, 320, 30, TFT_BLACK);
- M5.Lcd.setTextDatum(TC_DATUM);
- M5.Lcd.drawString(string, 160, 3, 4);
- }
- void setup() {
- M5.begin(true, false, true, true);
- header("SGP30 TEST",TFT_BLACK);
- Serial.begin(115200);
- Serial.println("SGP30 test");
- if (! sgp.begin()){
- Serial.println("Sensor not found :(");
- while (1);
- }
-
- M5.Lcd.drawString("TVOC:", 50, 40, 4);
- M5.Lcd.drawString("eCO2:", 50, 80, 4);
- Serial.print("Found SGP30 serial #");
- Serial.print(sgp.serialnumber[0], HEX);
- Serial.print(sgp.serialnumber[1], HEX);
- Serial.println(sgp.serialnumber[2], HEX);
- M5.Lcd.drawString("Initialization...", 140, 120, 4);
- }
- void loop() {
- while(i > 0) {
- if(millis()- last_millis > 1000) {
- last_millis = millis();
- i--;
- M5.Lcd.fillRect(198, 120, 40, 20, TFT_BLACK);
- M5.Lcd.drawNumber(i, 20, 120, 4);
- }
- }
- M5.Lcd.fillRect(0, 120, 300, 30, TFT_BLACK);
- if (! sgp.IAQmeasure()) {
- Serial.println("Measurement failed");
- return;
- }
- M5.Lcd.fillRect(100, 40, 220, 90, TFT_BLACK);
- M5.Lcd.drawNumber(sgp.TVOC, 120, 40 , 4);
- M5.Lcd.drawString("ppb", 200, 40, 4);
- M5.Lcd.drawNumber(sgp.eCO2, 120, 80, 4);
- M5.Lcd.drawString("ppm", 200, 80, 4);
- Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppb\t");
- Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");
-
- delay(1000);
- }
|