#include <TFT_eSPI.h>
#include <SPI.h>



// The display also uses hardware SPI, plus #9 & #10
#define TFT_CS 15
#define TFT_DC 2
#define TFT_MOSI 23
#define TFT_SCLK 18

//==============TITULOS==========//
#define tamano 2
#define TITULO "ENERGY METER"
#define BANCO "BANCO 1"
#define BANCO2 "BANCO 2"
#define V "VOLTAJE"
#define C "CORRIENTE"
#define P "POTENCIA"
#define W "ENERGIA"
#define FP "FACTOR DE POTENCIA"
#define F "FRECUENCIA"
//================================
  
//=======UNIDADES DE MEDIDA==========//
#define VOLTS "V"
#define AMPERS "A"
#define WATS "W"
#define ENERGY "kWh"
#define HERTZ "Hz"
//=================================

//==============COORDENADAS Y COLORES==========//
#define fila_titulo1 35
#define fila_titulo2 105
#define fila_titulo3 173

#define columna_titulo1 0
#define columna_titulo2 160

//______________UNIDADES__________________
#define tamano_unidades 4
#define fila_unidades1 60
#define fila_unidades2 135
#define fila_unidades3 210

#define columna_unidades1 130
#define columna_unidades2 270
//--------------------------------------

//______________NUMEROS__________________
#define tamano_numeros 7
#define fila_numeros1 50
#define fila_numeros2 120
#define fila_numeros3 190

#define columna_numeros1 0
#define columna_numeros2 175
//--------------------------------------

#define X_TITULO 80
#define Y_TITULO 10
#define C_TITULO TFT_WHITE

#define X_BANCO 240  
#define Y_BANCO 10
#define C_BANCO TFT_GREEN

#define X_V columna_titulo1
#define Y_V fila_titulo1
#define C_V TFT_WHITE
#define X_VOLTS columna_unidades1
#define Y_VOLTS fila_unidades1
#define C_VOLTS TFT_WHITE

#define X_C columna_titulo1
#define Y_C fila_titulo2
#define C_C TFT_WHITE
#define X_AMPERS columna_unidades1
#define Y_AMPERS fila_unidades2
#define C_AMPERS TFT_WHITE

#define X_P columna_titulo1
#define Y_P fila_titulo3
#define C_P TFT_WHITE
#define X_WATS columna_unidades1
#define Y_WATS fila_unidades3
#define C_WATS TFT_WHITE

///////////////////////////////
#define X_W columna_titulo2
#define Y_W fila_titulo1
#define C_W TFT_WHITE
#define X_ENERGY columna_unidades2
#define Y_ENERGY fila_unidades1
#define C_ENERGY TFT_WHITE

#define X_FP columna_titulo2
#define Y_FP fila_titulo2
#define C_FP TFT_WHITE

#define X_F columna_titulo2
#define Y_F fila_titulo3
#define C_F TFT_WHITE
#define X_HERTZ columna_unidades2
#define Y_HERTZ fila_unidades3
#define C_HERTZ TFT_WHITE
//================================


//=========VARIABLES========//
float voltaje=120.0;
float current=2.5;
float power=10.2;
float energy=30.5;
float power_factor=1.0;
float freq=60.0;

float voltaje2=220.0;
float current2=10.0;
float power2=2.2;
float energy2=1.0;
float power_factor2=0.5;
float freq2=50.0;
//=============================

TFT_eSPI tft =TFT_eSPI();

void setup(){
  tft.init();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);

  tft.setTextColor(C_TITULO);
  tft.drawString(TITULO,X_TITULO,Y_TITULO,tamano);
  tft.setTextColor(C_BANCO);
  tft.drawString(BANCO,X_BANCO,Y_BANCO,tamano);
  tft.setTextColor(C_V);
  tft.drawString(V,X_V,Y_V,tamano);
  tft.setTextColor(C_VOLTS);
  tft.drawString(VOLTS,X_VOLTS,Y_VOLTS,tamano_unidades);
  tft.setTextColor(C_C);
  tft.drawString(C,X_C,Y_C,tamano);
  tft.setTextColor(C_AMPERS);
  tft.drawString(AMPERS,X_AMPERS,Y_AMPERS,tamano_unidades);
  tft.setTextColor(C_P);
  tft.drawString(P,X_P,Y_P,tamano);
  tft.setTextColor(C_WATS);
  tft.drawString(WATS,X_WATS,Y_WATS,tamano_unidades);
  tft.setTextColor(C_W);
  tft.drawString(W,X_W,Y_W,tamano);
  tft.setTextColor(C_ENERGY);
  tft.drawString(ENERGY,X_ENERGY,Y_ENERGY,tamano_unidades);
  tft.setTextColor(C_FP);
  tft.drawString(FP,X_FP,Y_FP,tamano);
  tft.setTextColor(C_F);
  tft.drawString(F,X_F,Y_F,tamano);
  tft.setTextColor(C_HERTZ);
  tft.drawString(HERTZ,X_HERTZ,Y_HERTZ,tamano_unidades);
  /*
  tft.setTextColor(TFT_RED);
  tft.drawString("HELLO WORLD!!",10,10);
  tft.setTextColor(TFT_GREEN);
  tft.drawString("This is Font 2!!",10,24,2);
  tft.setTextColor(TFT_BLUE);
  tft.drawString(TITULO,10,46,4);

  tft.drawPixel(160,120,TFT_RED);
  tft.drawPixel(160,140,TFT_GREEN);

  tft.drawLine(0,0,100,100,TFT_TFT_WHITE);
  tft.drawLine(0,0,100,100,TFT_BLUE);

  tft.drawCircle(50,140,30,TFT_YELLOW);
  tft.fillCircle(80,200,20,TFT_YELLOW);

  tft.drawRect(0,0,30,120,TFT_WHITE);
  tft.fillRect(5,130,40,40,TFT_PURPLE);

  tft.setTextColor(TFT_YELLOW,0xbe6926);
*/
}
int number=0;
void loop(){
  tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.drawString(String(120),columna_numeros1,fila_numeros1,tamano_numeros);
  tft.setTextColor(TFT_YELLOW,TFT_BLACK);
  tft.drawString(String(20.0,1),columna_numeros1,fila_numeros2,tamano_numeros);
  tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.drawString(String(2400),columna_numeros1,fila_numeros3,tamano_numeros);

  tft.setTextColor(TFT_BLUE,TFT_BLACK);
  tft.drawString(String(400),columna_numeros2,fila_numeros1,tamano_numeros);
  tft.setTextColor(TFT_PURPLE,TFT_BLACK);
  tft.drawString(String(0.5,1),columna_numeros2,fila_numeros2,tamano_numeros);
  tft.setTextColor(TFT_ORANGE,TFT_BLACK);
  tft.drawString(String(60.1,1),columna_numeros2,fila_numeros3,tamano_numeros);
  
  number++;
  delay(1000);

}