#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Adafruit_ILI9341.h>
#include <DHT.h>
#include <Wire.h> // Incluimos la librería Wire para I2C
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define TFT_CS 10
#define TFT_DC 8
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); //instancia de pantalla
float temperatura;
float humedad;
void setup() {
Serial.begin(9600);
tft.begin(); //inicializar la pantalla
dht.begin(); //inicializar el sensor
tft.setRotation(1); //acotastado
}
#define BAR_WIDTH 40
#define BAR_SPACING 10
#define CHART_X_OFFSET 10
#define CHART_Y_OFFSET 30
#define CHART_WIDTH 320
#define CHART_HEIGHT 240 - CHART_Y_OFFSET
void loop() {
char valores[5];
for (int i = 0; i < 5; i++) {
float tem = dht.readTemperature();
valores[i] = tem;
Serial.println(tem);
delay(2000);
}
for (int i = 0; i < 5; i++) {
int barra_altura = map(valores[i], -40, 80, 0, CHART_HEIGHT);
int barra_x = CHART_X_OFFSET + (BAR_WIDTH + BAR_SPACING) * i;
int barra_y = 240 - barra_altura;
// Dibujamos la barra
tft.fillRect(barra_x, barra_y, BAR_WIDTH, barra_altura, ILI9341_BLUE);
// Mostramos el valor sobre la barra
tft.setTextSize(1);
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(barra_x + 5, barra_y - 10);
tft.print(float(valores[i]));
}
delay(5000); // Esperamos 5 segundos antes de volver a generar la gráfica
tft.fillScreen(ILI9341_BLACK); // Limpiamos la pantalla para la próxima iteración
}