buen día a todos:
este es mi primer post después de leer mucho y no encontrar una solución a mi problema me permito solicitar su ayuda.
llevo tiempo desarrollando un controlador para un acuario (por exceso de trabajo y cuestiones personales lo había abandonado).
tengo una pantalla de 3.2" la cual funciona perfectamente pero tengo un detalle al poner a funcionar el rtc, ya que si puedo mostrar la fecha, pero cuando muestro la hora se queda en pantalla solo la hora en la que inicio, osea no cambia el segundero a menos que reinicie el arduino me cambia la hora (a la que se reinicio el dispositivo), pero si omito las líneas donde la tft tiene que pintar la pantalla principal el reloj funciona a la perfeccion (metiendo la función en el loop), yo supongo es un error al momento de pintar los datos pero no le he encontrado solución.
espero haberme explicado correctamente, y agradezco su ayuda.
gracias.
#include <RelojDS1307.h>
#include <DallasTemperature.h>
//librerias
#include <ITDB02_Graph16.h>
#include <ITDB02_Touch.h>
#include <Wire.h>
#include <EEPROM.h>
#include <DS1307.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <arduino.h>
ITDB02 miLCD(38,39,40,41,ITDB32S);//declaramos la pantalla
//ITDB02 miLCD(38,39,40,41);
ITDB02_Touch miTouch(6,5,4,3,2); //declaramos el touch
RelojDS1307Class Reloj;
void setup()
{
miLCD.InitLCD(LANDSCAPE); // iniciamos la pantalla HORIZONTAL
//miLCD.clrScr(); //limpiamos la pantalla
miLCD.setFont(SmallFont);
miTouch.InitTouch(LANDSCAPE);//iniciamos el Touch HORIZONTAL
miTouch.setPrecision(PREC_HI);
PRINCIPAL();
Wire.begin();
//Reloj.SetDateTime(19,1,2017,23,3,10);
LeerConf();
SalvarConfig(); //Funcion Configuracion
//LeerConf();
IniciaT(); //Funcion de Temperaturas
}
void PRINCIPAL ()
{
miLCD.clrScr();
int monthDay,month,year,hour,minute,second;//agregado
//mensaje principal
miLCD.setFont(SmallFont);
miLCD.setColor(40,120,255);
miLCD.fillRoundRect(1,1,278,20);
miLCD.setBackColor(40,120,255);
miLCD.setColor(255,255,0);
miLCD.print("ARRECIFE FAMILIA ", 20,4);
//Caja de Luces
miLCD.setColor(40,120,255);
miLCD.drawRoundRect(1,122,319,217);
miLCD.setColor(255,255,255);
miLCD.setBackColor(0,0,0);
miLCD.print("LAMPARAS",CENTER,123);
miLCD.setColor(0,0,255);
//porcentajes
miLCD.setColor(255,255,255);
miLCD.print("20",39,203);
miLCD.print("40",66,203);
miLCD.print("60",93,203);
miLCD.print("80",120,203);
miLCD.print("100",145,203);
//Barras
miLCD.setColor(255,164,032); //naranja
miLCD.print("Amanecer:",165,141);
//miLCD.fillRect(18,141,153,152);
miLCD.setColor(255,255,000); //amarillo
miLCD.print("Dia :",165,155);
//miLCD.fillRect(18,155,153,166);
miLCD.setColor(100,255,255); //azul claro
miLCD.print("Luna :",165,169);
//miLCD.fillRect(18,169,153,180);
miLCD.setColor(0,255,100); //verde
miLCD.print("Refugio :",165,183);
//miLCD.fillRect(18,183,153,194);
// Cuadrante
miLCD.setColor(255,255,255);
miLCD.drawLine(15,139,15,200);
miLCD.drawLine(16,139,16,200);
miLCD.drawLine(17,139,17,200);
miLCD.drawLine(15,200,153,200);
miLCD.drawLine(15,201,153,201);
miLCD.drawLine(15,202,153,202);
//Regla
miLCD.drawLine(44,200,44,197);
miLCD.drawLine(72,200,72,197);
miLCD.drawLine(99,200,99,197);
miLCD.drawLine(126,200,126,197);
miLCD.drawLine(153,200,153,197);
//Caja de temperaturas
miLCD.setColor(40,120,255);
miLCD.drawRoundRect(1,22,158,118);
miLCD.setFont(SmallFont);
miLCD.setColor(255,255,255);
miLCD.print("TEMPERATURAS",31,25);
miLCD.setColor(200,255,100);
miLCD.print("Temp. Cerebro=",3,49);
miLCD.print("Temp. Acuario=",3,74);
miLCD.print("Temp. Lampara=",3,99);
//Caja de Luna
miLCD.setColor(40,120,255);
miLCD.drawRoundRect(162,22,318,118);
//boton Menu
miLCD.fillRoundRect(280,1,319,20);
miLCD.setBackColor(40,120,255);
miLCD.setColor(255,255,0);
miLCD.print("MENU",285,4);
MiraT();
RELOJ();
while(true)
{
if (miTouch.dataAvailable())
{
miTouch.read();
x=miTouch.getX();
y=miTouch.getY();
if((x>=280)&&(x<=319))
{
if((y>=1)&&(y<=20))
{
esperaToque(280,1,319,20);
Menu();
}
}
}
}
}
void RELOJ ()
{
int monthDay,month,year,hour,minute,second;//agregado
Reloj.GetDateTime(monthDay,month,year,hour,minute,second);
//miLCD.setColor(40,120,255);
//miLCD.fillRoundRect(0, 219, 319, 239);
//miLCD.setBackColor(40,120,255);
miLCD.setColor(255,255,0);
miLCD.setFont(BigFont);
miLCD.print(Reloj.Date(),8,221);
miLCD.print(Reloj.Time(),185,221);
}
void loop()
{
int monthDay,month,year,hour,minute,second;//agregado
if((millis()-Old_Mil)>1000)
{
Old_Mil=millis();
AlarmasTemp();
PrendeLuces();
}
}