#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Adafruit_ILI9341.h>
#include <DHT.h>
#define LCD_CS 10
#define LCD_CD 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(LCD_CS, LCD_CD);
#define BLACK 0x0000
#define BLUE 0x001F
#define LIGHT_BLUE 0x0575
#define RED 0xF800
#define GREEN 0x07E0
#define GREY 0x8410
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xFD20
#define DARKORANGE 0xFB60
#define MAROON 0x7800
#define BLACKM 0x18E3
#define PINK 0xFDF9
#define VIOLET 0x781F
#define CREAM 0xEF7D
//---------------------------------------DHT22 configuration and data variables
#define DHTPIN A0
#define DHTTYPE DHT22
DHT dht22 = DHT(DHTPIN, DHTTYPE);
int h;
float t;
float f;
float hif;
float hic;
//----------------------------------------The x and y points for the Temperature bar
int x_bar_t = 20;
int y_bar_t = 60;
int T_to_Bar;
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
Serial.begin(115200);
tft.begin();
tft.setRotation(3);
drawDHT22Data();
dht22.begin();
}
void loop() {
ShowDHT22Data();
delay(1000);
}
void GetDHT22Data() {
h = dht22.readHumidity();
t = dht22.readTemperature();
f = dht22.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
hif = dht22.computeHeatIndex(f, h);
hic = dht22.computeHeatIndex(t, h, false);
}
void draw_bar(int x_bar, int y_bar) {
tft.fillRoundRect(x_bar, y_bar, 35, 120, 5, BLACK);
tft.fillCircle(x_bar+17, y_bar+140, 30, BLACK);
tft.fillRoundRect(x_bar+4, y_bar+4, 27, 120, 2, WHITE);
tft.fillCircle(x_bar+17, y_bar+140, 25, WHITE);
tft.fillCircle(x_bar+17, y_bar+140, 21, DARKORANGE);
tft.drawLine(x_bar+37, y_bar+8, x_bar+42, y_bar+8, RED);
tft.setTextSize(1);
tft.setTextColor(RED);
tft.setCursor(x_bar+47, y_bar+4);
tft.println("80");
tft.drawLine(x_bar+37, y_bar+115, x_bar+42, y_bar+115, RED);
tft.setCursor(x_bar+47, y_bar+111);
tft.println("0");
}
void ShowDHT22Data() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
GetDHT22Data();
}
T_to_Bar = map(t, 0.0, 80.0, 108, 0);
if (t>=0) {
tft.fillRect(x_bar_t+8, (y_bar_t+8)+T_to_Bar, 19, 108-T_to_Bar, ORANGE);
tft.fillRect(x_bar_t+8, y_bar_t+8, 19, T_to_Bar, WHITE);
}
else if (t<0) {
tft.fillRect(x_bar_t+8, y_bar_t+8, 19, 108, WHITE);
}
tft.setTextSize(2);
tft.setTextColor(ORANGE, WHITE);
tft.setCursor(75, 100);
tft.print(t);
tft.print(" ");
tft.setCursor(160, 100);
tft.print((char)247);
tft.println("C");
tft.setCursor(75, 135);
tft.print(f);
tft.print(" ");
tft.setCursor(160, 135);
tft.print((char)247);
tft.println("F");
tft.setTextSize(3);
tft.setTextColor(BLUE, WHITE);
tft.setCursor(205, 95);
tft.print(h);
tft.print(" %");
tft.print(" ");
tft.setTextSize(1);
tft.setTextColor(BLACK, WHITE);
tft.setCursor(225, 200);
tft.print(hic);
tft.print(" ");
tft.print((char)247);
tft.print("C");
tft.print(" ");
tft.setTextSize(1);
tft.setTextColor(BLACK, WHITE);
tft.setCursor(225, 220);
tft.print(hif);
tft.print(" ");
tft.print((char)247);
tft.print("F");
tft.print(" ");
}
void drawDHT22Data() {
tft.fillScreen(WHITE);
tft.fillRect(0, 0, 320, 40, GREEN);
tft.drawLine(0, 40, 320, 40, MAROON);
tft.drawLine(0, 39, 320, 39, MAROON);
tft.setTextSize(2);
tft.setTextColor(WHITE);
tft.setCursor(25, 13);
tft.print("Temperature & Humidity");
draw_bar(x_bar_t, y_bar_t);
tft.drawLine(190, 60, 190, 227, MAROON);
tft.drawLine(190, 127, 300, 127, MAROON);
tft.fillRect(202, 60, 100, 27, BLUE);
tft.setTextSize(2);
tft.setTextColor(WHITE);
tft.setCursor(205, 65);
tft.print("Humidity");
tft.fillRect(202, 140, 100, 43, RED);
tft.setTextSize(2);
tft.setTextColor(WHITE);
tft.setCursor(227, 145);
tft.print("Heat");
tft.setCursor(220, 165);
tft.print("Index");
}
Loading
ili9341-cap-touch
ili9341-cap-touch