You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
529 lines
11 KiB
529 lines
11 KiB
|
|
|
|
void drawDisplay()
|
|
{
|
|
//t = rtc.getTime();
|
|
// t.hour=rtc_clock.get_hours();
|
|
// t.min=rtc_clock.get_minutes()
|
|
// sec=t.sec;
|
|
t = rtc.getTime();
|
|
min1= t.min;
|
|
hour1=t.hour;
|
|
drawSec(t.sec);
|
|
oldsec=t.sec;
|
|
if (t.sec==0)
|
|
{
|
|
if(( t.hour>5)&&( t.hour<7)&&(t.min>29))
|
|
{night=0;
|
|
savefld();//запись новой даты в файлы полива цветов
|
|
}
|
|
else
|
|
{night=1;
|
|
}
|
|
|
|
drawMin(t.min);
|
|
drawHour(t.hour, t.min);
|
|
myGLCD.setColor(255, 255, 255);
|
|
myGLCD.setBackColor(0, 0, 0);
|
|
myGLCD.setFont( SevenSegNumFont);
|
|
// myGLCD.print(rtc_clock.get_hours(), clockCenterX+92+111+32, clockCenterY-8-20);
|
|
if (night==1)
|
|
{ myGLCD.setColor(192, 192, 255);
|
|
|
|
}
|
|
else
|
|
{ myGLCD.setColor(255,255, 255);
|
|
|
|
}
|
|
if (t.hour<10)
|
|
{
|
|
myGLCD.printNumI(0,clockCenterX+340, clockCenterY-8-20);
|
|
myGLCD.printNumI(t.hour, clockCenterX+340+32, clockCenterY-8-20);
|
|
}
|
|
else
|
|
{
|
|
myGLCD.printNumI(t.hour,clockCenterX+340, clockCenterY-8-20);
|
|
}
|
|
if (t.min<10)
|
|
{
|
|
myGLCD.printNumI(0,clockCenterX+340+96, clockCenterY-8-20);
|
|
myGLCD.printNumI(t.min, clockCenterX+340+128, clockCenterY-8-20);
|
|
}
|
|
else
|
|
{
|
|
myGLCD.printNumI(t.min, clockCenterX+340+96, clockCenterY-8-20);
|
|
}
|
|
|
|
}
|
|
if (q==1)
|
|
{ drawMin(t.min);
|
|
drawHour(t.hour, t.min);
|
|
printDate();
|
|
}
|
|
if( (hour1==0) && (min1==0))
|
|
{
|
|
printDate();
|
|
}
|
|
}
|
|
//****************************************************************************
|
|
void drawMark(int h)
|
|
{
|
|
float x1, y1, x2, y2;
|
|
|
|
h=h*30;
|
|
h=h+270;
|
|
|
|
x1=2*110*cos(h*0.0175);
|
|
y1=2*110*sin(h*0.0175);
|
|
x2=2*100*cos(h*0.0175);
|
|
y2=2*100*sin(h*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
}
|
|
|
|
void drawSec(int s)
|
|
{
|
|
float x1, y1, x2, y2;
|
|
int ps = s-1;
|
|
|
|
myGLCD.setColor(0, 0, 0);
|
|
if (ps==-1)
|
|
ps=59;
|
|
ps=ps*6;
|
|
ps=ps+270;
|
|
|
|
x1=2*95*cos(ps*0.0175);
|
|
y1=2*95*sin(ps*0.0175);
|
|
x2=2*80*cos(ps*0.0175);
|
|
y2=2*80*sin(ps*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
|
|
myGLCD.setColor(255,255,255);
|
|
s=s*6;
|
|
s=s+270;
|
|
|
|
x1=2*95*cos(s*0.0175);
|
|
y1=2*95*sin(s*0.0175);
|
|
x2=2*80*cos(s*0.0175);
|
|
y2=2*80*sin(s*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
}
|
|
|
|
void drawMin(int m)
|
|
{
|
|
float x1, y1, x2, y2, x3, y3, x4, y4;
|
|
int pm = m-1;
|
|
|
|
myGLCD.setColor(0, 0, 0);
|
|
if (pm==-1)
|
|
pm=59;
|
|
pm=pm*6;
|
|
pm=pm+270;
|
|
|
|
x1=2*80*cos(pm*0.0175);
|
|
y1=2*80*sin(pm*0.0175);
|
|
x2=2*5*cos(pm*0.0175);
|
|
y2=2*5*sin(pm*0.0175);
|
|
x3=2*30*cos((pm+4)*0.0175);
|
|
y3=2*30*sin((pm+4)*0.0175);
|
|
x4=2*30*cos((pm-4)*0.0175);
|
|
y4=2*30*sin((pm-4)*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY);
|
|
myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY);
|
|
myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY);
|
|
|
|
myGLCD.setColor(0, 255, 0);
|
|
m=m*6;
|
|
m=m+270;
|
|
|
|
x1=2*80*cos(m*0.0175);
|
|
y1=2*80*sin(m*0.0175);
|
|
x2=2*5*cos(m*0.0175);
|
|
y2=2*5*sin(m*0.0175);
|
|
x3=2*30*cos((m+4)*0.0175);
|
|
y3=2*30*sin((m+4)*0.0175);
|
|
x4=2*30*cos((m-4)*0.0175);
|
|
y4=2*30*sin((m-4)*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY);
|
|
myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY);
|
|
myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY);
|
|
}
|
|
|
|
void drawHour(int h, int m)
|
|
{
|
|
float x1, y1, x2, y2, x3, y3, x4, y4;
|
|
int ph = h;
|
|
|
|
myGLCD.setColor(0, 0, 0);
|
|
if (m==0)
|
|
{
|
|
ph=((ph-1)*30)+((m+59)/2);
|
|
}
|
|
else
|
|
{
|
|
ph=(ph*30)+((m-1)/2);
|
|
}
|
|
ph=ph+270;
|
|
|
|
x1=2*60*cos(ph*0.0175);
|
|
y1=2*60*sin(ph*0.0175);
|
|
x2=2*5*cos(ph*0.0175);
|
|
y2=2*5*sin(ph*0.0175);
|
|
x3=2*20*cos((ph+5)*0.0175);
|
|
y3=2*20*sin((ph+5)*0.0175);
|
|
x4=2*20*cos((ph-5)*0.0175);
|
|
y4=2*20*sin((ph-5)*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY);
|
|
myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY);
|
|
myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY);
|
|
|
|
myGLCD.setColor(255, 255, 0);
|
|
h=(h*30)+(m/2);
|
|
h=h+270;
|
|
|
|
x1=2*60*cos(h*0.0175);
|
|
y1=2*60*sin(h*0.0175);
|
|
x2=2*5*cos(h*0.0175);
|
|
y2=2*5*sin(h*0.0175);
|
|
x3=2*20*cos((h+5)*0.0175);
|
|
y3=2*20*sin((h+5)*0.0175);
|
|
x4=2*20*cos((h-5)*0.0175);
|
|
y4=2*20*sin((h-5)*0.0175);
|
|
|
|
myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY);
|
|
myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY);
|
|
myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY);
|
|
myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY);
|
|
}
|
|
|
|
|
|
|
|
//**************************************************
|
|
void printDate()
|
|
{
|
|
myGLCD.setFont( Ubuntubold);
|
|
// Time t_temp;
|
|
|
|
//t_temp = rtc.getTime();
|
|
|
|
if (night==1)
|
|
{ myGLCD.setColor(142, 142, 200);//ночной календарь
|
|
myGLCD.setBackColor(0,38,92);
|
|
}
|
|
else
|
|
{ myGLCD.setColor(0, 0, 255);
|
|
myGLCD.setBackColor(255, 255, 255);
|
|
}
|
|
dow= t.dow;
|
|
|
|
myGLCD.print(str[dow-1], 272+450-80, 24);
|
|
// myGLCD.print(rtc.getDOWStr(FORMAT_SHORT), 256+450, 8);
|
|
if (t.date<10)
|
|
myGLCD.printNumI(t.date, 272+450-50, 58);
|
|
else
|
|
myGLCD.printNumI(t.date, 264+450-50, 58);
|
|
myGLCD.printNumI(t.mon, 256+450-50, 92);
|
|
myGLCD.printNumI(t.year, 248+450-50, 126);
|
|
myGLCD.setFont(BigFont);
|
|
}
|
|
|
|
void clearDate()
|
|
{
|
|
if (night==1)
|
|
{ myGLCD.setColor (0,38,92);
|
|
}
|
|
else
|
|
{ myGLCD.setColor(255, 255, 255);
|
|
}
|
|
|
|
myGLCD.fillRect(240+450-80, 15, 319+450, 166);
|
|
// myGLCD.fillRoundRect(240+450-80, 0, 319+450, 85+80);
|
|
}
|
|
//*************************************************************************
|
|
//******************************************************************
|
|
void clok()
|
|
|
|
{ //t = rtc.getTime();
|
|
int a=0;
|
|
q=1;
|
|
int x, y;
|
|
do
|
|
{
|
|
t = rtc.getTime();
|
|
|
|
if( night==1 )
|
|
{constbr=20;
|
|
br=constbr+brightness;
|
|
analogWrite(12, br);
|
|
}
|
|
else
|
|
{constbr=200;
|
|
br=constbr+brightness;
|
|
analogWrite(12, br);
|
|
if (rawp==1)
|
|
{rawp=0;
|
|
myGLCD.fillScr(VGA_AQUA);//выход утром в RAW
|
|
byte bait;
|
|
byte bait1;
|
|
int w;
|
|
sd.chdir("/");
|
|
delay (100);
|
|
|
|
myFile.open("33.raw", O_READ);
|
|
|
|
int n=0;
|
|
int m=0;
|
|
for (int i =0 ; i < 96000; i = i++)
|
|
{
|
|
n=n+1;
|
|
bait = myFile.read();
|
|
|
|
bait1 =myFile.read();
|
|
|
|
// w1= (bait - 48) << 4 | (bait1 - 48);
|
|
// w2= (bait2 - 48) << 4 | (bait3 - 48);
|
|
w= bait<<8|bait1;
|
|
|
|
pic1[n]=w;
|
|
//3199
|
|
if (n>399){
|
|
n=0;
|
|
// myGLCD.drawBitmap (0, 20*m, 320, 10, pic1, 2);
|
|
// myGLCD.drawBitmap (0, 2*m, 320, 1, pic1, 2);
|
|
myGLCD.drawBitmap (0, 2*m, 400, 1, pic1, 2);
|
|
m=m+1;
|
|
}
|
|
}
|
|
myGLCD.drawBitmap (639, 370, 160, 80, cl);
|
|
myGLCD.drawRoundRect (639, 370, 799, 450); //Clok
|
|
kalend();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
raw();
|
|
}
|
|
|
|
}
|
|
|
|
if (q==1)
|
|
{
|
|
|
|
// Clear screen
|
|
myGLCD.clrScr();
|
|
|
|
// Draw Clockface
|
|
myGLCD.setColor(0, 0, 255);
|
|
myGLCD.setBackColor(0, 0, 0);
|
|
for (int i=0; i<5; i++)
|
|
{
|
|
myGLCD.drawCircle(clockCenterX, clockCenterY, 230-i);//119-i
|
|
}
|
|
for (int i=0; i<5; i++)
|
|
{
|
|
myGLCD.drawCircle(clockCenterX, clockCenterY, 2*i);
|
|
}
|
|
|
|
myGLCD.setColor(192, 192, 255);
|
|
myGLCD.setFont( SevenSegNumFont);
|
|
myGLCD.print("3", clockCenterX+92+111-16, clockCenterY-8-20);
|
|
myGLCD.print("6", clockCenterX-32+12, clockCenterY+95+111-30);
|
|
myGLCD.print("9", clockCenterX-109-111, clockCenterY-8-20);
|
|
myGLCD.print("12", clockCenterX-32, clockCenterY-109-111);
|
|
for (int i=0; i<12; i++)
|
|
{
|
|
if ((i % 3)!=0)
|
|
drawMark(i);
|
|
}
|
|
// myGLCD.setFont(BigFont);
|
|
|
|
// Draw calendar
|
|
if (night==1)
|
|
{ myGLCD.setColor(0,38,92);
|
|
|
|
}
|
|
else
|
|
{ myGLCD.setColor(255, 255, 255);
|
|
|
|
}
|
|
|
|
// myGLCD.setColor(255, 255, 255);
|
|
myGLCD.fillRoundRect(240+450-80, 0, 319+450, 85+80);
|
|
|
|
if (night==1)
|
|
{ myGLCD.setColor(255, 255, 255);
|
|
|
|
}
|
|
else
|
|
{ myGLCD.setColor(0, 0, 0);
|
|
|
|
}
|
|
// myGLCD.setColor(0, 0, 0);
|
|
|
|
for (int i=0; i<14; i++)
|
|
{
|
|
myGLCD.drawLine(249+450-80+(i*10), 0, 248+450-80+(i*10), 7);
|
|
myGLCD.drawLine(250+450-80+(i*10), 0, 249+450-80+(i*10), 7);
|
|
myGLCD.drawLine(251+450-80+(i*10), 0, 250+450-80+(i*10), 7);
|
|
}
|
|
myGLCD.setFont( BigFont);
|
|
// Draw SET button
|
|
myGLCD.setColor(64, 64, 128);
|
|
myGLCD.fillRoundRect(260+450, 200+200, 319+450, 239+200);
|
|
myGLCD.setColor(255, 255, 255);
|
|
myGLCD.drawRoundRect(260+450, 200+200, 319+450, 239+200);
|
|
myGLCD.setBackColor(64, 64, 128);
|
|
myGLCD.print("SET", 266+450, 212+200);
|
|
myGLCD.setBackColor(0, 0, 0);
|
|
// Draw exit button
|
|
myGLCD.setColor(64, 64, 128);
|
|
myGLCD.fillRoundRect(260+450, 200+150, 319+450, 239+150);
|
|
myGLCD.setColor(255, 255, 255);
|
|
myGLCD.drawRoundRect(260+450, 200+150, 319+450, 239+150);
|
|
myGLCD.setBackColor(64, 64, 128);
|
|
myGLCD.print("EXT", 266+450, 212+150);
|
|
myGLCD.setBackColor(0, 0, 0);
|
|
|
|
|
|
if (night==1)
|
|
{ myGLCD.setColor(192, 192, 255);
|
|
|
|
}
|
|
else
|
|
{ myGLCD.setColor(255,255, 255);
|
|
|
|
}
|
|
|
|
|
|
myGLCD.setBackColor(0, 0, 0);
|
|
myGLCD.setFont( SevenSegNumFont);
|
|
|
|
t = rtc.getTime();
|
|
if (t.hour<10)
|
|
{
|
|
myGLCD.printNumI(0,clockCenterX+340, clockCenterY-8-20);
|
|
myGLCD.printNumI(t.hour, clockCenterX+340+32, clockCenterY-8-20);
|
|
}
|
|
else
|
|
{
|
|
myGLCD.printNumI(t.hour,clockCenterX+340, clockCenterY-8-20);
|
|
}
|
|
myGLCD.print(":",clockCenterX+340+64, clockCenterY-8-20);
|
|
if (t.min<10)
|
|
{
|
|
myGLCD.printNumI(0,clockCenterX+340+96, clockCenterY-8-20);
|
|
myGLCD.printNumI(t.min, clockCenterX+340+128, clockCenterY-8-20);
|
|
}
|
|
else
|
|
{
|
|
myGLCD.printNumI(t.min, clockCenterX+340+96, clockCenterY-8-20);
|
|
}
|
|
|
|
}
|
|
|
|
if (t.date==0)
|
|
{
|
|
setClock();
|
|
}
|
|
|
|
drawDisplay();
|
|
// printDate();
|
|
q=0;
|
|
|
|
|
|
|
|
if (myTouch.dataAvailable())
|
|
{
|
|
myTouch.read();
|
|
x=myTouch.getX();
|
|
y=myTouch.getY();
|
|
if (((y>=200+200) && (y<=239+200)) && ((x>=260+450) && (x<=319+450)))
|
|
{
|
|
myGLCD.setColor (255, 0, 0);
|
|
myGLCD.drawRoundRect(260+450, 200+200, 319+450, 239+200);
|
|
setClock();
|
|
}
|
|
if (((y>=200+150) && (y<=239+150)) && ((x>=260+450) && (x<=319+450)))
|
|
{
|
|
if (c==1)
|
|
{
|
|
menu();
|
|
}
|
|
myGLCD.setColor (255, 0, 0);
|
|
myGLCD.drawRoundRect(260+450, 200+150, 319+450, 239+150);
|
|
menu();
|
|
}
|
|
|
|
}
|
|
//**********TOUCH
|
|
delay(10);
|
|
t = rtc.getTime();
|
|
// rawp=1 ;
|
|
if (rawp==1)
|
|
{ if (t.sec==17)
|
|
{ prognoz();
|
|
q=1;
|
|
delay(5000);
|
|
}
|
|
if (t.sec==37)
|
|
{ nightgraf();
|
|
q=1;
|
|
delay(5000);
|
|
}
|
|
if ((sec==10) || (sec==29) )
|
|
{
|
|
if(Serial.available()) {
|
|
priem();
|
|
}
|
|
|
|
}
|
|
}
|
|
//**************************massiv******************
|
|
// t = rtc.getTime();
|
|
if (t.min==0)
|
|
{
|
|
if ((t.sec==0)||(t.sec==1))
|
|
{
|
|
// printmassiv();
|
|
if (fsec==1)
|
|
{uart();
|
|
bmp085();
|
|
uart();
|
|
savemastd();
|
|
|
|
|
|
fsec=0; //delay (300);
|
|
if(t.hour==23)
|
|
{sdwrite();
|
|
savemasclok();
|
|
saveminmax();//запись макс мин и средних значений датчиков за день
|
|
}
|
|
if((t.hour>=0)||(t.hour<23))
|
|
{
|
|
savemasclok();//запись времени на sd 12:56 15/05/14 и массива rab
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
//*****************************************************
|
|
if (t.min>3)
|
|
{fsec=1;
|
|
}
|
|
//*****************************************************************
|
|
|
|
|
|
|
|
} while (a<1);
|
|
}
|
|
|