// // // #include <Adafruit_GFX.h>
// // // #include <SPI.h>
// // // #include <Wire.h>
// // // #include <Adafruit_ILI9341.h>
// // // #include <Adafruit_FT6206.h>

// // // // Pin definitions for ESP32-S3-WROOM-1
// // // #define TFT_CS    15   // Chip Select for TFT
// // // #define TFT_DC    2    // Data/Command for TFT
// // // #define TFT_RST   -1   // Reset for TFT (not used, default reset pin)
// // // #define TOUCH_SCL 8    // SCL pin for Touchscreen
// // // #define TOUCH_SDA 10   // SDA pin for Touchscreen

// // // // Create TFT display object
// // // Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

// // // // Create touchscreen object
// // // Adafruit_FT6206 touch = Adafruit_FT6206();

// // // void setup() {
// // //   if (!touch.begin(40)) { // 40 is the default threshold for touch detection
// // //   tft.setCursor(0, 240);
// // //   tft.setTextColor(ILI9341_YELLOW);
// // //   tft.setTextSize(2);
// // //   tft.println("Touchscreen not found!");
// // // } else {
// // //   tft.println("Touchscreen ready!");
// // // }

// // //   tft.begin();
// // //   tft.setRotation(3);
// // //   tft.setCursor(0, 0);
// // //   tft.setTextColor(ILI9341_RED);
// // //   tft.setTextSize(3);
// // //   tft.println("Hello, TFT!");

// // //   tft.setCursor(0, 220);
// // //   tft.setTextColor(ILI9341_GREEN);
// // //   tft.setTextSize(2);
// // //   tft.println("I can has colors?");

// // //   // Meme reference: https://english.stackexchange.com/questions/20356/origin-of-i-can-haz
// // // }

// // // void loop() {}

// // #include <Adafruit_GFX.h>
// // #include <SPI.h>
// // #include <Wire.h>
// // #include <Adafruit_ILI9341.h>
// // #include <Adafruit_FT6206.h>

// // // Pin definitions for ESP32-S3-WROOM-1
// // #define TFT_CS    15   // Chip Select for TFT
// // #define TFT_DC    2    // Data/Command for TFT
// // #define TFT_RST   -1   // Reset for TFT (not used, default reset pin)
// // #define TOUCH_SCL 8    // SCL pin for Touchscreen
// // #define TOUCH_SDA 10   // SDA pin for Touchscreen

// // // Create TFT display object
// // Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

// // // Create touchscreen object
// // Adafruit_FT6206 touch = Adafruit_FT6206();

// // void setup() {
// //   // Start serial communication for debugging
// //   Serial.begin(115200);
// //   delay(100);

// //   // Initialize the TFT display
// //   tft.begin();
// //   tft.setRotation(3); // Adjust for desired display orientation
// //   tft.fillScreen(ILI9341_BLACK); // Clear screen

// //   // Display a welcome message
// //   tft.setCursor(0, 0);
// //   tft.setTextColor(ILI9341_RED);
// //   tft.setTextSize(3);
// //   tft.println("Hello, TFT!");

// //   tft.setCursor(0, 50);
// //   tft.setTextColor(ILI9341_GREEN);
// //   tft.setTextSize(2);
// //   tft.println("I can has colors?");

// //   // Initialize touchscreen
// //   Wire.begin(TOUCH_SDA, TOUCH_SCL); // Initialize I²C with custom pins
// //   if (!touch.begin(40)) { // 40 is the default touch detection threshold
// //     Serial.println("Touchscreen not found!");
// //     tft.setCursor(0, 100);
// //     tft.setTextColor(ILI9341_YELLOW);
// //     tft.setTextSize(2);
// //     tft.println("Touchscreen not found!");
// //   } else {
// //     Serial.println("Touchscreen initialized.");
// //     tft.setCursor(0, 100);
// //     tft.setTextColor(ILI9341_BLUE);
// //     tft.setTextSize(2);
// //     tft.println("Touchscreen ready!");
// //   }
// // }

// // // void loop() {
// // //   // Check if the touchscreen is touched
// // //   if (touch.touched()) {
// // //     TS_Point p = touch.getPoint();

// // //     // Adjust for screen rotation if necessary
// // //     int x = p.x, y = p.y;
// // //     if (tft.getRotation() == 3) {
// // //       x = map(p.x, 0, 240, 0, tft.width());
// // //       y = map(p.y, 0, 320, 0, tft.height());
// // //     }

// // //     // Debug touch points
// // //     Serial.printf("Touched at: x=%d, y=%d\n", x, y);

// // //     // Visual feedback on the screen
// // //     tft.fillCircle(x, y, 5, ILI9341_WHITE);
// // //   }

// // //   delay(100);
// // // }
// // void loop() {
// //   // Check if the touchscreen is touched
// //   if (touch.touched()) {
// //     TS_Point p = touch.getPoint();

// //     // Debug raw touch data
// //     Serial.printf("Raw touch data: x=%d, y=%d\n", p.x, p.y);

// //     // Variables to store mapped coordinates
// //     int16_t x, y;

// //     // Adjust mapping based on display rotation
// //     switch (tft.getRotation()) {
// //       case 0: // Portrait
// //         x = map(p.x, 0, 240, 0, tft.width());
// //         y = map(p.y, 0, 320, 0, tft.height());
// //         break;
// //       case 1: // Landscape (clockwise)
// //         x = map(p.y, 0, 320, 0, tft.width());
// //         y = map(p.x, 240, 0, 0, tft.height());
// //         break;
// //       case 2: // Portrait (upside down)
// //         x = map(p.x, 240, 0, 0, tft.width());
// //         y = map(p.y, 320, 0, 0, tft.height());
// //         break;
// //       case 3: // Landscape (counterclockwise)
// //         x = map(p.y, 320, 0, 0, tft.width());
// //         y = map(p.x, 0, 240, 0, tft.height());
// //         break;
// //       default:
// //         x = y = 0; // Default to (0, 0) in case of unexpected rotation
// //         break;
// //     }

// //     // Debug mapped coordinates
// //     Serial.printf("Mapped touch data: x=%d, y=%d\n", x, y);

// //     // Visual feedback on the screen
// //     tft.fillCircle(x, y, 5, ILI9341_WHITE);
// //   }

// //   delay(100);
// // }


#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_ILI9341.h>
#include <Adafruit_FT6206.h>
#include "DHT.h" // Include the DHT library

// Pin definitions for ESP32-S3-WROOM-1
#define TFT_CS    15   // Chip Select for TFT
#define TFT_DC    2    // Data/Command for TFT
#define TFT_RST   -1   // Reset for TFT (not used, default reset pin)
#define TOUCH_SCL 8    // SCL pin for Touchscreen
#define TOUCH_SDA 10   // SDA pin for Touchscreen

#define DHTPIN    17   // GPIO pin connected to DHT sensor
#define DHTTYPE   DHT22 // DHT type: DHT11 or DHT22

// Create objects
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
Adafruit_FT6206 touch = Adafruit_FT6206();
DHT dht(DHTPIN, DHTTYPE);

// Function to convert Celsius to Fahrenheit
float convertToFahrenheit(float celsius) {
  return (celsius * 1.8) + 32;
}

// Function to read temperature and humidity (one decimal place)
void readTemperatureAndHumidity() {
  float humidity = dht.readHumidity();
  float temperatureCelsius = dht.readTemperature();

  // Check if readings are valid
  if (isnan(humidity) || isnan(temperatureCelsius)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Convert temperature to Fahrenheit
  float temperatureFahrenheit = convertToFahrenheit(temperatureCelsius);

  // Print readings to Serial Monitor
  Serial.printf("Temperature: %.1f °C / %.1f °F\n", temperatureCelsius, temperatureFahrenheit);
  Serial.printf("Humidity: %.1f %%\n", humidity);

  // Display readings on TFT
  tft.setCursor(0, 100);
  tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK); // Overwrite previous text
  tft.printf("Temp: %.1f C / %.1f F\n", temperatureCelsius, temperatureFahrenheit);
  tft.setCursor(0, 130);
  tft.printf("Hum: %.1f %%\n", humidity);
}

void setup() {
  // Initialize serial for debugging
  Serial.begin(115200);
  delay(100);

  // Initialize DHT sensor
  dht.begin();

  // Initialize TFT display
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(ILI9341_BLACK);
  tft.setCursor(0, 0);
  tft.setTextColor(ILI9341_GREEN);
  tft.setTextSize(2);
  tft.println("Temperature & Humidity!");

  // Initialize touchscreen
  Wire.begin(TOUCH_SDA, TOUCH_SCL);
  if (!touch.begin(40)) {
    Serial.println("Touchscreen not found!");
    tft.setCursor(0, 50);
    tft.setTextColor(ILI9341_YELLOW);
    tft.println("Touchscreen not found!");
  } else {
    Serial.println("Touchscreen initialized.");
    tft.setCursor(0, 50);
    tft.setTextColor(ILI9341_BLUE);
    tft.println("Touchscreen ready!");
  }
}

void loop() {
  // Read temperature and humidity every 2 seconds
  readTemperatureAndHumidity();
  delay(2000);
}
Loading
ili9341-cap-touch