// SPDX-FileCopyrightText: 2022 Limor Fried for Adafruit Industries
//
// SPDX-License-Identifier: MIT
#include <Arduino.h>
#include "Adafruit_MAX1704X.h"
#include <SensirionI2cSen66.h>
#include <Wire.h>
#include <Fonts/FreeSans12pt7b.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>
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;
}
Comments