// // // #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
ili9341-cap-touch