//Adafruit and SPI libraries
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
//Pins
#define TFT_DC 9
#define TFT_CS 10
//Create ILI9341 instance
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
float numero = 20;
float numero2 = 20;
float numero3 = 8;
float valor = 15;
float valorH = 6;
void setup(){
//TFT init
tft.begin();
tft.setRotation(1); //Horizontal
tft.fillScreen(ILI9341_BLACK);
tft.drawLine(0, 179, 319, 179, ILI9341_GREEN);
tft.drawLine(0, 180, 319, 180, ILI9341_GREEN);
tft.drawLine(0, 239, 319, 239, ILI9341_GREEN);
tft.drawLine(0, 181, 0, 239, ILI9341_GREEN);
tft.drawLine(79, 181, 79, 239, ILI9341_GREEN);
tft.drawLine(80, 181, 80, 239, ILI9341_GREEN);
tft.drawLine(159, 181, 159, 239, ILI9341_GREEN);
tft.drawLine(160, 181, 160, 239, ILI9341_GREEN);
tft.drawLine(239, 181, 239, 239, ILI9341_GREEN);
tft.drawLine(240, 181, 240, 239, ILI9341_GREEN);
tft.drawLine(319, 181, 319, 239, ILI9341_GREEN);
tft.fillRect(81, 181, 78, 58, ILI9341_DARKCYAN);
tft.fillRect(161, 181, 78, 58, ILI9341_ORANGE);
tft.fillRect(241, 181, 78, 58, ILI9341_BLUE);
tft.fillRect(185, 205, 30, 10, ILI9341_WHITE);
tft.fillRect(195, 195, 10, 30, ILI9341_WHITE);
tft.fillRect(265, 205, 30, 10, ILI9341_WHITE);
tft.fillRect(0, 0, 320, 29, ILI9341_NAVY);
tft.setCursor(4, 4);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(3);
tft.println("20");
tft.setCursor(48, 4);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(3);
tft.println("05");
tft.fillRect(41, 8, 3, 3, ILI9341_WHITE);
tft.fillRect(41, 18, 3, 3, ILI9341_WHITE);
tft.fillRect(1, 181, 78, 58, ILI9341_GREENYELLOW);
tft.setCursor(15, 196);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(4);
tft.print("ON");
tft.setCursor(85, 200);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(3);
tft.println("AUTO");
//Icono tiempo
tft.fillRect(180, 40, 120, 100, ILI9341_BLACK);
int centerX = 240;
int centerY = 90;
int radius = 20;
// Dibuja el círculo exterior del sol
tft.fillCircle(centerX, centerY, radius, ILI9341_ORANGE);
// Dibuja los rayos del sol
for (int i = 0; i < 8; i++) {
float angle = 2 * PI * i / 8;
int x1 = centerX + radius * cos(angle);
int y1 = centerY + radius * sin(angle);
int x2 = centerX + (radius + 10) * cos(angle);
int y2 = centerY + (radius + 10) * sin(angle);
tft.drawLine(x1, y1, x2, y2, ILI9341_ORANGE);
}
}
void loop(){
valoresModoNormal();
//Temperatura Exterior
char buffer4[8];
dtostrf(valor, 5, 1, buffer4);
tft.setCursor(100, 4);
tft.setTextColor(ILI9341_WHITE,ILI9341_NAVY);
tft.setTextSize(3);
tft.print(buffer4);
tft.setTextColor(ILI9341_WHITE);
tft.print(" C");
tft.drawCircle(200, 7, 3, ILI9341_WHITE);
tft.drawCircle(200, 7, 2, ILI9341_WHITE);
valor += 0.2;
//humedad exterior
char buffer5[5];
dtostrf(valorH, 3, 0, buffer5);
tft.setCursor(245, 4);
tft.setTextColor(ILI9341_WHITE,ILI9341_NAVY);
tft.setTextSize(3);
tft.print(buffer5);
tft.print("%");
valorH += 0.3;
delay(1000);
}
void copoNieve(int x, int y) {
tft.drawFastHLine(x, y + 4, 9, ILI9341_CYAN);
tft.drawFastVLine(x + 4, y, 9, ILI9341_CYAN);
tft.drawFastHLine(x + 3, y + 1, 3, ILI9341_CYAN);
tft.drawFastHLine(x + 3, y + 7, 3, ILI9341_CYAN);
tft.drawFastVLine(x + 1, y + 3, 3, ILI9341_CYAN);
tft.drawFastVLine(x + 7, y + 3, 3, ILI9341_CYAN);
tft.drawPixel(x, y + 2, ILI9341_CYAN);
tft.drawPixel(x, y + 6, ILI9341_CYAN);
tft.drawPixel(x + 8, y + 2, ILI9341_CYAN);
tft.drawPixel(x + 8, y + 6, ILI9341_CYAN);
tft.drawPixel(x + 2, y, ILI9341_CYAN);
tft.drawPixel(x + 6, y, ILI9341_CYAN);
tft.drawPixel(x + 2, y + 8, ILI9341_CYAN);
tft.drawPixel(x + 6, y + 8, ILI9341_CYAN);
}
void gotaAgua(int x,int y){
tft.drawLine(x + 5, y, x, y + 10, ILI9341_BLUE);
tft.drawLine(x + 6, y, x + 1, y + 10, ILI9341_BLUE);
}
void valoresModoNormal(){
//Set temperature
char buffer[8];
dtostrf(numero, 4, 1, buffer); // Convierte el número en una cadena con 4 caracteres, incluyendo 1 decimal
tft.setCursor(180, 155);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.print("Set:");
tft.setTextColor(ILI9341_YELLOW, ILI9341_BLACK);
tft.print(buffer);
tft.setTextColor(ILI9341_WHITE);
tft.print(" C");
tft.drawCircle(282, 157, 2, ILI9341_WHITE);
numero += 0.1;
//temperatura interior
tft.setCursor(10, 40);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
tft.setTextSize(2);
tft.print("Temperatura:");
char buffer2[8];
dtostrf(numero2, 4, 1, buffer2); // Convierte el número en una cadena con 4 caracteres, incluyendo 1 decimal
tft.setCursor(10, 65);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
tft.setTextSize(6);
tft.print(buffer2);
numero2 += 0.1;
//humedad interior
char buffer3[8];
dtostrf(numero3, 2, 0, buffer3);
tft.setCursor(10, 120);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.print("Humedad:");
tft.setCursor(10, 145);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
tft.setTextSize(3);
tft.print(buffer3);
tft.print(" %");
numero3 += 0.3;
}
Loading
ili9341-cap-touch
ili9341-cap-touch