
// This program requires the UTFT library.

#define imagedatatype  unsigned short
//#include <UTFT_Buttons.h>
#include <UTouch.h>
#include <UTFT.h>
//#include <UTFT_tinyFAT.h>
#include <SdFat.h>
//#include <SdFatUtil.h>
SdFat sd;
SdFile myFile;
//#include <Time.h>
//#include <rtc_clock.h>
#include <MP1090S.h>
#include <Wire.h>
//RTC_clock rtc_clock(XTAL);

//*********************RTC*************************************************************
#include <DS3231.h>
// Init the DS3231 using the hardware interface
DS3231  rtc(A2, A3);

// Init a Time-data structure
Time  t;


//**************BMP085****************************************************************
#define BMP085_ADDRESS 0x77        // I2C address of BMP085

const unsigned char OSS = 0;       // Oversampling Setting

//float temperatur;
float pressure;
boolean rawp=0;
// Calibration values of BMP085:
short ac1;
short ac2; 
short ac3; 
unsigned short ac4;
unsigned short ac5;
unsigned short ac6;
short b1; 
short b2;
short mb;
short mc;
short md;
long b5; 
// temul[24]max t
// temul[25]min t
//*****************************************************************************
word temdom[24]={256,254,260,264,265,266,270,268,259,255,250,249,256,254,260,264,265,266,270,268,259,255,250,249};
word temul[26]={256,254,260,264,265,266,270,268,259,255,250,249,256,254,260,264,265,266,270,268,259,255,250,249,490,152};// max t=49.0  min 15.2
word pres[24]={756,754,760,764,765,766,770,768,759,755,750,749,756,754,760,764,765,766,770,768,759,755,750,749};
word time1[28]={1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,0,100,200,300,400,500,600,700,800,900,16081,12004,20021,6454};//max 16.08.14 12:00    min 2.02.14  6:45
word hug[24]={756,754,760,764,765,766,770,768,759,755,750,749,756,754,760,764,765,766,770,768,759,755,750,749};
byte h[24]={25,25,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,25,25};
byte sun[24]={0,0,0,0,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,20,20,0,0,0};
word t1[24]={201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202};
word t2[24]={202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202};
word t3[24]={203,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202};
word t4[24]={204,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202};
word t5[24]={205,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202};
word bat[5]={300,300,300,300,300};
byte h1[24]={10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
byte h2[24]={10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
byte h3[24]={10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
byte h4[24]={10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
byte h5[24]={10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
//word temul[24]={256,254,260,264,265,266,270,268,259,255,250,249,256,254,260,264,265,266,270,268,259,255,250,249};
//*********************************************************************************

extern uint8_t SevenSegNumFont[];
extern uint8_t SmallFont[];
extern uint8_t BigFont[];

extern uint8_t Ubuntubold[];


extern imagedatatype aandelen[];
extern imagedatatype fotos[];
extern imagedatatype instellingen[];
extern imagedatatype radio[];
extern imagedatatype klok[];
extern imagedatatype cl[];
extern imagedatatype pr[];
extern imagedatatype le[];
extern imagedatatype xf[];
extern imagedatatype ad[];
extern imagedatatype mi[];
extern imagedatatype jar[];
extern imagedatatype wer[];
extern imagedatatype open[];//40
extern imagedatatype del[];//40
extern imagedatatype flr[];//40
extern imagedatatype ints[];//40
extern imagedatatype clokk[];//40
extern imagedatatype dom1[];
byte volume=7;
byte rad=0;
long StationFrequency;
int vetzav;//napr vetra
int vetczav;//skorost vetra
int vetdzav;//skorost vetra dr
int preszav;
int vet;//napr vetra
int vetc;//skorost vetra
int vetd;//skorost vetra dr
byte q=1;
 byte hour1;
byte hourp;//время пропуска данных massiv 623
byte dd=0;// флаг перехода времени через 00
  byte min1;
 byte sec;
 byte date;
 byte mon;
 word year1;
 byte dow ;
 byte night;
int clockCenterX=300;
int clockCenterY=230;
int oldsec=0;
char* str[] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
const int chipSelect = 10;
byte ptoday=0;//погода сегодня 0-солн 1-перемен обл 2-пасмурно 3-дождь 4- снег 5- туман 6-гроза
byte pzav=0; //pogoda zavtra
byte tu;
//**********************************
byte ntdat;//номер датчика
byte zndat;//знак температуры 0+
  int hourd1;//время прихода данных час
  int mind1;//мин
   int hourd2=2;//время прихода данных час
  int mind2=2;//мин
   int hourd3;//время прихода данных час
  int mind3;//мин
   int hourd4=4;//время прихода данных час
  int mind4=4;//мин
   int hourd5=5;//время прихода данных час
  int mind5=5;//мин
 boolean fh=0;// флаг данных одного часа записываются данные в файл только один раз в час
 
 int hourdu=77;//время прихода данных час
 int mindu=77;//мин
 
  word h11=100;
  word h12=100;
  word h13=100;
  word h14=100;
  word h15=100;
  word t11=202;
  word t12=202;
  word t13=202;
  word t14=202;
  word t15=202;
 //********************************************
 byte tud;
byte  hu;
byte   hud;
 int volt;
byte  zn;
byte  znzav;
byte tuzav;
 byte tudzav;
unsigned long currentMillis = millis();
unsigned long previousMillis = 0; 
int tab=0;
boolean graf=0;
byte colorgraf=0;
 byte mon1;
word years1;
byte days1;
int w=0;//счетчик строк при чтении из файла
String bufer="";
char* name; 
boolean fa=0;//флаг изменения макс темп
boolean fi=0;//флаг изменения мин темп
boolean bt=0;//флаг показа барометра
//boolean priemt=0;//флаг приема данных
 long interval;  // interval at which to blink (milliseconds)

//UTFT myGLCD(ITDB50,38,39,40,41);   // Remember to change the model parameter to suit your display module!
UTFT myGLCD(TFT01_70,38,39,40,41);
UTouch      myTouch(42,43,44,45,46);//TCLK, TCS, TDIN, TDOUT и IRQ.Папа
//UTouch      myTouch(59,61,60,15,14);//TCLK, TCS, TDIN, TDOUT и IRQ.Вова
//UTouch      myTouch(19,16,17,15,14);//TCLK, TCS, TDIN, TDOUT и IRQ.Вова
//UTFT_Buttons  myButtons(&myGLCD, &myTouch);
//int x,y;
//UTFT_tinyFAT myFiles(&myGLCD);

unsigned short pic1[0x320];


 int color = 0;
word colorlist[] = {VGA_WHITE, VGA_BLACK, VGA_RED, VGA_BLUE, VGA_GREEN, VGA_FUCHSIA, VGA_YELLOW, VGA_AQUA};
int  bsize = 4;
//unsigned short pic2[0x6400];
//unsigned short pic3[0x6400];
byte brightness=0;
byte br;
byte constbr=100;
boolean c=0;
boolean fcl=0;//флаг закрытия файла

 // int pressed_button;
  boolean default_colors = true;
  
boolean fsec=1;
//**************************DHT11**********************************
//#include "DHT.h"
//#define DHTPIN 3     // what pin we're connected to
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//int humidity=50;
//DHT dht(DHTPIN, DHTTYPE);
  int tdc=20;
 int tdd=0;
  int hdc=50;
 int hdd=0;
//**************************************************************
//#define SSID "VOVA-47" // введите ваш SSID
//#define PASS "vovak26102003" // введите ваш пароль
//#define DST_IP "188.226.224.148" //api.openweathermap.org
boolean raw1=0;
byte wifi=0;
boolean fwifi=1;
byte wifih=10;// час обновления данных
byte wifim=15;// минуты
//****************************************************************
  int per=1;//номер передачи
  //****************************************
  int hour9;
  int min9;
  int t9;
  int h9;
  int osv9;
  boolean zn9=0;
    //****************************************
int tfl=25;// temp flower
int vfl=50;// vlaga flower
int osv=37;// svet flower
int dfl=12;// time flower

int tfl2=26;// temp flower
int vfl2=55;// vlaga flower
int dfl2=13;// time flower

int tfl3=27;// temp flower
int vfl3=52;// vlaga flower
int dfl3=14;// time flower
  
  //************************************
  
void setup()
{   
 rtc.begin();
    Wire.begin();
      Serial.begin(9600);       // скорость обмена по уарт  
      delay(200);
  Serial3.begin(9600);       // скорость обмена по уарт  
//  delay(200);
Serial2.begin(9600);       // скорость обмена по уарт WIFI 
//Serial2.begin(115200);       // скорость обмена по уарт WIFI 
  Serial2.setTimeout(5000);
  bmp085Calibration();
  delay(1000);
 pinMode(65, OUTPUT);	
 digitalWrite(65, LOW); 
 Serial3.print(1); 
 
 pinMode(18, OUTPUT);// reset WIFI 
 digitalWrite(18, LOW);
 delay(100);
 digitalWrite(18, HIGH);
 pinMode(53, OUTPUT);// reset nrf 
 digitalWrite(53, LOW);
 delay(100);
 digitalWrite(53, HIGH);
 // dumpRegisters();
  //dps.dumpCalData();
// uart(); 
  pinMode(12, OUTPUT);
   br=constbr+brightness;
  analogWrite(12, 0);

  delay(800);  // catch Due reset problem
    pinMode(10, OUTPUT);
  myGLCD.InitLCD();
  myGLCD.setFont( BigFont);
  myGLCD.fillScr(VGA_BLUE);
//sd.begin(chipSelect, SPI_FULL_SPEED );
sd.begin(chipSelect, SPI_HALF_SPEED );
// file system
SdFat sd;

 myTouch.InitTouch();
  myTouch.setPrecision(PREC_HI);
 // dht.begin();
  dtu21();
 //    rtc_clock.init();
 //readmasclok();
 readmasrab(); 
////  rtc.setTime(12, 39, 0);     // Set the time to 12:00:00 (24hr format)
//rtc.setDate(29, 11, 2015);   // Set the date to January 1st, 2014
//rtc.setDOW(THURSDAY); 

     t = rtc.getTime();
  years1=t.year;
  days1=t.date;
  mon1=t.mon;
//  dow=calcDOW(days1, mon1, years1);
//  rtc.setDOW(dow);
dow=t.dow ;
hour1=t.hour;
min1=t.min; 
delay(100);
 
//  myButtons.setTextFont(BigFont);
 // myButtons.setSymbolFont(Dingbats1_XL);
//dtu21();
// esp8266();
 br=constbr+brightness;
  analogWrite(12, br);
}

//myFiles.loadBitmap(0, 0, 320, 240, "33.raw");

void loop()
{
 if (t.date==0)
  {
    setClock();
  }  
 
  
  
  
  
  
  menu();
}
