// SPDX-FileCopyrightText: 2022 Limor Fried for Adafruit Industries // // SPDX-License-Identifier: MIT #include #include "Adafruit_MAX1704X.h" #include #include #include #include // Core graphics library #include // Hardware-specific library for ST7789 #include Adafruit_ST7789 display = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); SensirionI2cSen66 sensor; GFXcanvas16 canvas(240, 135); Adafruit_MAX17048 lipo; bool maxfound = false; bool lcfound = false; // macro definitions // make sure that we use the proper definition of NO_ERROR #ifdef NO_ERROR #undef NO_ERROR #endif #define NO_ERROR 0 static char errorMessage[64]; static int16_t error; void setup() { Serial.begin(115200); // while (! Serial) delay(10); delay(100); // turn on the TFT / I2C power supply pinMode(TFT_I2C_POWER, OUTPUT); digitalWrite(TFT_I2C_POWER, HIGH); delay(10); display.init(135, 240); // Init ST7789 240x135 display.setRotation(3); canvas.setFont(&FreeSans12pt7b); canvas.setTextColor(ST77XX_WHITE); if (!lipo.begin()) { Serial.println(F("Couldnt find Adafruit MAX1704X?\nMake sure a battery is plugged in!")); while (1) delay(10); } Serial.print(F("Found MAX17048")); Serial.print(F(" with Chip ID: 0x")); Serial.println(lipo.getChipID(), HEX); maxfound = true; } uint8_t j = 0; void loop() { float massConcentrationPm1p0 = 0.0; float massConcentrationPm2p5 = 0.0; float massConcentrationPm4p0 = 0.0; float massConcentrationPm10p0 = 0.0; float humidity = 0.0; float temperature = 0.0; float vocIndex = 0.0; float noxIndex = 0.0; uint16_t co2 = 0; error = sensor.readMeasuredValues( massConcentrationPm1p0, massConcentrationPm2p5, massConcentrationPm4p0, massConcentrationPm10p0, humidity, temperature, vocIndex, noxIndex, co2); if (error != NO_ERROR) { Serial.print("Error trying to execute readMeasuredValues(): "); errorToString(error, errorMessage, sizeof errorMessage); Serial.println(errorMessage); return; } if (j % 2 == 0) { canvas.fillScreen(ST77XX_BLACK); canvas.setCursor(0, 17); canvas.setTextColor(ST77XX_RED); canvas.println("Adafruit Feather"); canvas.setTextColor(ST77XX_YELLOW); canvas.println("ESP32-S3 TFT Demo"); canvas.setTextColor(ST77XX_GREEN); canvas.print("Battery: "); canvas.setTextColor(ST77XX_WHITE); canvas.print(lipo.cellVoltage(), 1); canvas.print(" V / "); canvas.print(lipo.cellPercent(), 0); canvas.println("%"); canvas.setTextColor(ST77XX_BLUE); canvas.print("I2C: "); canvas.setTextColor(ST77XX_WHITE); for (uint8_t a=0x01; a<=0x7F; a++) { if (valid_i2c[a]) { canvas.print("0x"); canvas.print(a, HEX); canvas.print(", "); } } canvas.println(""); canvas.print("Buttons: "); Serial.println(digitalRead(0)); Serial.println(digitalRead(1)); Serial.println(digitalRead(2)); if (!digitalRead(0)) { canvas.print("D0, "); } if (digitalRead(1)) { canvas.print("D1, "); } if (digitalRead(2)) { canvas.print("D2, "); } display.drawRGBBitmap(0, 0, canvas.getBuffer(), 240, 135); pinMode(TFT_BACKLITE, OUTPUT); digitalWrite(TFT_BACKLITE, HIGH); } j++; return; }