#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h> // Arduino SPI library
#include <DHT.h> // Libreria de sensor temperatura/humedad DHT22
// ST7789 TFT module connections
#define TFT_CS 10 // define chip select pin
#define TFT_DC 9 // define data/command pin
#define TFT_RST 8 // define reset pin, or set to -1 and connect to Arduino RESET pin
#define DHTPIN 2 // Define el pin del sensor DHT22
DHT dht(DHTPIN, DHT22); // Inicializa el sensor DHT
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // Initialize Adafruit ST7789 TFT library
float p = 3.1415926;
void setup() {
Serial.begin(9600);
Serial.print(F("Hello! ST77xx TFT Test"));
Serial.println("Ejemplo de sensor DHT22"); // LINEA PARA SENSOR DHT22
// if the display has CS pin try with SPI_MODE0
tft.init(240, 320, SPI_MODE0); // Init ST7789 display 240x320 pixel
// if the screen is flipped, remove this command
tft.setRotation(1);
Serial.println(F("Initialized"));
uint16_t time = millis();
tft.fillScreen(ST77XX_BLACK);
time = millis() - time;
Serial.println(time, DEC);
delay(500);
tft.fillScreen(ST77XX_BLACK);
// En este espacio se llama la funcion que será infinita.
// Ejemplo COLOCAR TEXTO desde la funcion "tftPrintTest"
// tft testdrawtext function!
testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", ST77XX_WHITE);
delay(1000);
// tft print function!
tftPrintTest();
delay(4000);
// a single pixel
tft.drawPixel(tft.width()/2, tft.height()/2, ST77XX_GREEN);
delay(500);
tft.fillScreen(ST77XX_BLACK);
// a mediabuttons re4presentation
mediabuttons();
delay(500);
Serial.println("done");
delay(1000);
tft.fillScreen(ST77XX_BLACK);
}
void loop() {
dht22 ();
delay(1000);
//tft.invertDisplay(true);
//delay(500);
//tft.invertDisplay(false);
//delay(500);
}
void testdrawtext(char *text, uint16_t color) {
tft.setCursor(0, 0);
tft.setTextColor(color);
tft.setTextWrap(true);
tft.print(text);
}
void tftPrintTest() {
tft.setTextWrap(false);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 30);
tft.setTextColor(ST77XX_RED);
tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(ST77XX_YELLOW);
tft.setTextSize(2);
tft.println("Hello World!");
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(3);
tft.println("Hello World!");
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(4);
tft.print(1234.567);
delay(1500);
tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(0);
tft.println("Hello World!");
tft.setTextSize(1);
tft.setTextColor(ST77XX_GREEN);
tft.print(p, 6);
tft.println(" Want pi?");
tft.println(" ");
tft.print(8675309, HEX); // print 8,675,309 out in HEX!
tft.println(" Print HEX!");
tft.println(" ");
tft.setTextColor(ST77XX_WHITE);
tft.println("Sketch has been");
tft.println("running for: ");
tft.setTextColor(ST77XX_MAGENTA);
tft.print(millis() / 1000);
tft.setTextColor(ST77XX_WHITE);
tft.print(" seconds.");
}
void mediabuttons() {
// play
tft.fillScreen(ST77XX_BLACK);
tft.fillRoundRect(25, 10, 78, 60, 8, ST77XX_WHITE);
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_RED);
delay(500);
// pause
tft.fillRoundRect(25, 90, 78, 60, 8, ST77XX_WHITE);
tft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_GREEN);
tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_GREEN);
delay(500);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_BLUE);
delay(50);
// pause color
tft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_RED);
tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_RED);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_GREEN);
}
void dht22() {
dht.begin(); // Inicializa el sensor DHT
// Lee los datos de temperatura y humedad
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
tft.setTextWrap(false);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 30);
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(2);
tft.println("Temperatura (°C): ");
tft.println(temperatura);
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(2);
tft.println("Humedad (%): ");
tft.println(humedad);
// Verifica si la lectura de datos fue exitosa
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error al leer datos del sensor DHT22");
} else {
// Imprime la temperatura y la humedad
Serial.print("Temperatura (°C): ");
Serial.println(temperatura);
Serial.print("Humedad (%): ");
Serial.println(humedad);
}
}