#include "DHT.h" //--> DHT library
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_DC 5
#define TFT_CS 16
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xFD20
#define DARKORANGE 0xFB60
#define MAROON 0x7800
#define DHTPIN 33
#define DHTTYPE DHT11
DHT dht11(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;
//----------------------------------------The variable to hold the conversion value from the temperature value to the value for the temperature bar
int T_to_Bar;
//----------------------------------------Millis variable to update the temperature and humidity values
unsigned long previousMillis = 0; //--> will store last time updated
// constants won't change:
const long interval = 2000; //--> interval
void setup() {
Serial.begin(115200);
tft.begin(); //--> SPFD5408/ILI9341
tft.setRotation(135); //--> Need for the Mega, please changed for your choice or rotation initial
tft.fillScreen(WHITE); //--> TFT LCD background color
dht11.begin();
//----------------------------------------Initial view
tft.drawLine(15, 40, 300, 40, MAROON); //--> tft.drawLine(x, y, x size, y size, MAROON)
tft.drawLine(15, 39, 300, 39, MAROON);
tft.setTextSize(2);
tft.setTextColor(BLUE);
tft.setCursor(60,20); //--> tft.setCursor(x, y)
tft.print("Temperature");
//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, CYAN);
tft.setTextSize(2);
tft.setTextColor(WHITE);
tft.setCursor(205, 65);
tft.print("Humidity");
tft.fillRect(202, 140, 100, 43, GREEN);
tft.setTextSize(2);
tft.setTextColor(WHITE);
tft.setCursor(220, 145);
tft.print("MIN");
tft.setCursor(220, 165);
tft.print("MAX");
//DHT11Data();
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
//----------------------------------------Millis to update the temperature and humidity values
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
//GetDHT11Data();
}
//----------------------------------------Temperature bar
T_to_Bar = map(t, 0.0, 50.0, 108, 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);
//----------------------------------------
tft.setTextSize(2);
tft.setTextColor(ORANGE, WHITE);
tft.setCursor(75, 100);
tft.print(t);
if (t < 10) tft.print(" ");
tft.setCursor(160, 100);
tft.print((char)247);
tft.println("C");
tft.setCursor(75, 135);
tft.print(f);
if (f < 100) tft.print(" ");
tft.setCursor(160, 135);
tft.print((char)247);
tft.println("F");
tft.setTextSize(3);
tft.setTextColor(CYAN, WHITE);
tft.setCursor(205, 95);
tft.print(h);
tft.print(" %");
tft.setTextSize(1);
tft.setTextColor(GREEN, WHITE);
tft.setCursor(205, 200);
tft.print(hic);
tft.print(" ");
tft.print((char)247);
tft.print("C");
if (hic < 10) tft.print(" ");
tft.setTextSize(1);
tft.setTextColor(GREEN, WHITE);
tft.setCursor(205, 220);
tft.print(hif);
tft.print(" ");
tft.print((char)247);
tft.print("F");
if (hif < 100) tft.print(" ");
//========================================================================GetDHT11Data()
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
h = dht11.readHumidity();
// Read temperature as Celsius (the default)
t = dht11.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
f = dht11.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
// Compute heat index in Fahrenheit (the default)
hif = dht11.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
hic = dht11.computeHeatIndex(t, h, false);
//========================================================================
//========================================================================draw_bar(x, y)
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.fillRect(x_bar+8, y_bar+8, 19, 120, DARKORANGE);
tft.fillCircle(x_bar+17, y_bar+140, 21, DARKORANGE);
//tft.fillRect(41, 58, 19, 108, RED);
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("50");
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");
}