Our clock project

Dependencies:   SPI_TFT_ILI9341 TFT_fonts Adafruit_RTCLib RTC-DS1307 TSI

IoT Clock

We have been given a task to design a clock with internet features, the 'Internet Clock'. First of all, we identified what features we want:

Display: Split into 4 parts:

  • Analogue clock - the good ol' fashioned circle display, complete with minute, hour and second hands.
  • Digital clock - equipped with date for the modern human.
  • Weather display - for those who cannot be bothered to look out of the window.
  • Alarm - just what you need when you have to get up or be somewhere.

Wifi module:

  • For collecting data for weather, alarm times and so it can be an 'Internet Clock'.

Speaker:

  • To make the annoying sound to let you know your alarm is going off.

Range finder:

  • To wave your hand in front of to turn the alarm off, because pressing a button is too last centurary.

The roles:

  • Soroush's first task was to get the LCD screen to work. Meanwhile Adam sorted out the speaker system.
  • When these were done, Adam worked on the screen to display a clock face and date/year. Soroush then connected the wifi module to extract data for weather, location and date. /media/uploads/amilner1/img_0285.jpg Connecting the wifi module.
  • The next part was to get the range-finder hooked up and responding to a hand passing, and switch the alarm off.
  • Finally, it was time for assembly.

Difficulties: There were many issues faced throughout the project. First of all, Adam's coding knowledge was a lot less than Soroush's which slowed down some completion of tasks. Although, this did help us sort out the roles. Next was the wifi connectivity which caused several problems during the project, and we couldn't get the connection or fetch data, which further slowed the process. Another difficulty was finding the range-finder's set-up page for mbed. However, when we got past these set backs we managed to put everything together quickly, /media/uploads/amilner1/img_0294.jpg All the hardware wired in.

Outcome:

  • Our LCD screen has 2 displays:
  1. 1 An analogue clock filling the screen.

/media/uploads/amilner1/img_0304.jpg

  1. 2 An analogue clock, date and year, weather and location, and alarm time.

/media/uploads/amilner1/img_0305.jpg

This is changed by holding (not passing quickly) your hand in front of the range-finder.

  • An RTC to keep track of the time rather than collecting the information from then internet. However, we have had a lot of problems setting this up, and it doesn't seem to respond.
  • Wifi is also not connected, so we have the default date, time, weather and location.
  • You are able to change the alarm time by swiping the touch pad on the back.

Perhaps given more time we'd be able to fix these problems. But a key point is that we have got all the other features working, except the correct time. /media/uploads/amilner1/img_0303.jpg

Committer:
amilner1
Date:
Wed May 24 14:48:44 2017 +0000
Revision:
15:452425c099ef
Parent:
14:85c51b4eff4b
Child:
16:a639477091ad
Speaker working 'beep beep'

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amilner1 15:452425c099ef 1
sfaghihi 2:56a27b66d03a 2 #include "Display.h"
sfaghihi 2:56a27b66d03a 3
sfaghihi 2:56a27b66d03a 4 Display::Display ()
sfaghihi 2:56a27b66d03a 5 : myTFT(DISPLAY_MOSI_PIN, DISPLAY_MISO_PIN, DISPLAY_SCLK_PIN, DISPLAY_CS_PIN, DISPLAY_RST_PIN, DISPLAY_DC_PIN, "TFT")
sfaghihi 2:56a27b66d03a 6 {
sfaghihi 2:56a27b66d03a 7 //myTFT = new SPI_TFT_ILI9341(DISPLAY_MOSI_PIN, DISPLAY_MISO_PIN, DISPLAY_SCLK_PIN, DISPLAY_CS_PIN, DISPLAY_RST_PIN, DISPLAY_DC_PIN,"TFT");
sfaghihi 2:56a27b66d03a 8 myTFT.claim(stdout); // send stdout to the TFT display
sfaghihi 2:56a27b66d03a 9 myTFT.set_orientation(1);
sfaghihi 2:56a27b66d03a 10 myTFT.background(Black); // set background to black
sfaghihi 2:56a27b66d03a 11 myTFT.foreground(White); // set chars to white
sfaghihi 2:56a27b66d03a 12 myTFT.cls(); // clear the screen
sfaghihi 2:56a27b66d03a 13 myTFT.set_font((unsigned char*) Arial12x12);
sfaghihi 2:56a27b66d03a 14 myTFT.locate(0,0);
sfaghihi 10:e5bcd9088d5d 15 //LOG("O HOH O\r\n");
sfaghihi 10:e5bcd9088d5d 16 //printf("O HOH O ");
sfaghihi 3:6795b827060b 17 }
sfaghihi 3:6795b827060b 18
sfaghihi 11:80a6facfd9f1 19 void Display::drawClock(TimeClass *time, bool face, TimeClass *prevTime)
sfaghihi 3:6795b827060b 20 {
sfaghihi 8:e7fce7d9ebdd 21 //LOG("Small\r\n");
sfaghihi 11:80a6facfd9f1 22 /*myTFT.circle(70, 70, 60, 0xFFFFFF); // clock circle
amilner1 4:519ffdf16d25 23 myTFT.line(70, 10, 70, 20, 0xFFFFFF); // 12 oclock
amilner1 4:519ffdf16d25 24 myTFT.line(70, 130, 70, 120, 0xFFFFFF); // 6 oclock
amilner1 4:519ffdf16d25 25 myTFT.line(10, 70, 20 , 70, 0xFFFFFF); // 3 oclock
amilner1 4:519ffdf16d25 26 myTFT.line(120, 70, 130 , 70, 0xFFFFFF); // 9 oclock
amilner1 4:519ffdf16d25 27 myTFT.line(100, 121.9615, 95, 113.301, 0xFFFFFF); // 7 oclock
amilner1 4:519ffdf16d25 28 myTFT.line(40, 18.0385, 45, 26.699, 0xFFFFFF); // 1 oclock
amilner1 4:519ffdf16d25 29 myTFT.line(121.9615, 100, 113.301, 95, 0xFFFFFF); // 8 oclock
amilner1 4:519ffdf16d25 30 myTFT.line(18.0385, 40, 26.699, 45, 0xFFFFFF); // 2 oclock
amilner1 4:519ffdf16d25 31 myTFT.line(121.9615,40,113.301,45, 0xFFFFFF); // 4 oclock
amilner1 4:519ffdf16d25 32 myTFT.line(18.0385,100,26.699,95, 0xFFFFFF); // 10 oclock
amilner1 4:519ffdf16d25 33 myTFT.line(100,18.0385,95,26.699, 0xFFFFFF); // 5 oclock
amilner1 4:519ffdf16d25 34 myTFT.line(40,121.9615,45,113.301, 0xFFFFFF); // 11 olcock
sfaghihi 8:e7fce7d9ebdd 35 //LOG("SO Near: %x\r\n", (void *)time);
sfaghihi 8:e7fce7d9ebdd 36 float h = time->hour % 12;
amilner1 5:fe6910712822 37 float m = time->minute;
amilner1 5:fe6910712822 38 float s = time->second;
sfaghihi 8:e7fce7d9ebdd 39 float htheta = (M_PI/6.0)*(h + (m/60.0) + (s/3600.0)); // hour hand angle
sfaghihi 8:e7fce7d9ebdd 40 float mtheta = (M_PI/6.0)*(m + (s/60.0))/5.0; // minute hand angle
sfaghihi 8:e7fce7d9ebdd 41 float stheta = (M_PI/6.0)*s/5.0; // second hand angle
amilner1 5:fe6910712822 42 float hx = 70.0 + 15.0*sin(htheta); // hour hand position
amilner1 5:fe6910712822 43 float hy = 70.0 - 15.0*cos(htheta); //
sfaghihi 8:e7fce7d9ebdd 44 float mx = 70.0 + 30.0*sin(mtheta); // minute hand position
sfaghihi 8:e7fce7d9ebdd 45 float my = 70.0 - 30.0*cos(mtheta); //
sfaghihi 8:e7fce7d9ebdd 46 float sx = 70.0 + 50.0*sin(stheta); // second hand position
sfaghihi 8:e7fce7d9ebdd 47 float sy = 70.0 - 50.0*cos(stheta); //
sfaghihi 10:e5bcd9088d5d 48 //LOG("SO Far: %f, %f\r\n", sx, sy);
sfaghihi 8:e7fce7d9ebdd 49 if (cls) {
sfaghihi 8:e7fce7d9ebdd 50 myTFT.line(70, 70, hx, hy, Black); // hour hand plot
sfaghihi 8:e7fce7d9ebdd 51 myTFT.line(70, 70, mx, my, Black); // minute hand plot
sfaghihi 8:e7fce7d9ebdd 52 myTFT.line(70, 70, sx, sy, Black); // second hand plot
sfaghihi 8:e7fce7d9ebdd 53 } else {
sfaghihi 8:e7fce7d9ebdd 54 myTFT.line(70, 70, hx, hy, Yellow); // hour hand plot
sfaghihi 8:e7fce7d9ebdd 55 myTFT.line(70, 70, mx, my, White); // minute hand plot
sfaghihi 8:e7fce7d9ebdd 56 myTFT.line(70, 70, sx, sy, DarkCyan); // second hand plot
sfaghihi 11:80a6facfd9f1 57 }*/
sfaghihi 11:80a6facfd9f1 58 int xc = 80;
sfaghihi 12:dd5d8eea2e47 59 int yc = 90;
sfaghihi 11:80a6facfd9f1 60 int r = 80;
sfaghihi 11:80a6facfd9f1 61 if (face) {
sfaghihi 11:80a6facfd9f1 62 myTFT.circle(xc, yc, r, White); // clock circle
sfaghihi 11:80a6facfd9f1 63 for (int i = 0; i < 12; i++)
sfaghihi 11:80a6facfd9f1 64 myTFT.line(xc+6*r/7*sin((float)i*M_PI/6.0), yc-6*r/7*cos((float)i*M_PI/6.0),
sfaghihi 11:80a6facfd9f1 65 xc + r*sin((float)i*M_PI/6.0), yc-r*cos((float)i*M_PI/6.0), 0xFFFFFF);
sfaghihi 8:e7fce7d9ebdd 66 }
sfaghihi 8:e7fce7d9ebdd 67
sfaghihi 8:e7fce7d9ebdd 68 //LOG("SO Near: %x\r\n", (void *)time);
sfaghihi 8:e7fce7d9ebdd 69 float h = time->hour % 12;
sfaghihi 8:e7fce7d9ebdd 70 float m = time->minute;
sfaghihi 8:e7fce7d9ebdd 71 float s = time->second;
sfaghihi 8:e7fce7d9ebdd 72 float htheta = (M_PI/6.0)*(h + (m/60.0) + (s/3600.0)); // hour hand angle
sfaghihi 8:e7fce7d9ebdd 73 float mtheta = (M_PI/6.0)*(m + (s/60.0))/5.0; // minute hand angle
sfaghihi 8:e7fce7d9ebdd 74 float stheta = (M_PI/6.0)*s/5.0; // second hand angle
sfaghihi 8:e7fce7d9ebdd 75 int hx = xc + r*sin(htheta)/4.5; // hour hand position
sfaghihi 8:e7fce7d9ebdd 76 int hy = yc - r*cos(htheta)/4.5; //
sfaghihi 8:e7fce7d9ebdd 77 int mx = xc + r*sin(mtheta)/1.9; // minute hand position
sfaghihi 8:e7fce7d9ebdd 78 int my = yc - r*cos(mtheta)/1.9; //
sfaghihi 8:e7fce7d9ebdd 79 int sx = xc + r*sin(stheta)/1.5; // second hand position
sfaghihi 8:e7fce7d9ebdd 80 int sy = yc - r*cos(stheta)/1.5; //
sfaghihi 11:80a6facfd9f1 81
sfaghihi 11:80a6facfd9f1 82 float ps = prevTime->second;
sfaghihi 11:80a6facfd9f1 83 float pm = prevTime->minute;
sfaghihi 11:80a6facfd9f1 84 float ph = prevTime->hour % 12;
sfaghihi 11:80a6facfd9f1 85 float hp_the = (M_PI/6.0)*(ph + (pm/60.0) + (ps/3600.0));
sfaghihi 11:80a6facfd9f1 86 float mp_the = (M_PI/6.0)*(pm + (ps/60.0))/5.0;
sfaghihi 11:80a6facfd9f1 87 float sp_the = (M_PI/6.0)*ps/5.0;
sfaghihi 13:334c591a982b 88 int hxp = xc + r*sin(hp_the)/4.0;
sfaghihi 13:334c591a982b 89 int hyp = yc - r*cos(hp_the)/4.0; //
sfaghihi 11:80a6facfd9f1 90 int mxp = xc + r*sin(mp_the)/1.9; // minute hand position
sfaghihi 11:80a6facfd9f1 91 int myp = yc - r*cos(mp_the)/1.9; //
sfaghihi 11:80a6facfd9f1 92 int sxp = xc + r*sin(sp_the)/1.5; // second hand position
sfaghihi 11:80a6facfd9f1 93 int syp = yc - r*cos(sp_the)/1.5;
sfaghihi 11:80a6facfd9f1 94
sfaghihi 12:dd5d8eea2e47 95 if (syp != sy || sxp != sx || face) {
sfaghihi 11:80a6facfd9f1 96 myTFT.line(xc, yc, sxp, syp, Black);
sfaghihi 11:80a6facfd9f1 97 }
sfaghihi 11:80a6facfd9f1 98
sfaghihi 12:dd5d8eea2e47 99 if (myp != my || mxp != mx || face) {
sfaghihi 11:80a6facfd9f1 100 myTFT.line(xc, yc, mxp, myp, Black);
sfaghihi 11:80a6facfd9f1 101 }
sfaghihi 11:80a6facfd9f1 102
sfaghihi 12:dd5d8eea2e47 103 if (hyp != hy || hxp != hx || face) {
sfaghihi 11:80a6facfd9f1 104 myTFT.line(xc, yc, hxp, hyp, Black);
sfaghihi 11:80a6facfd9f1 105 }
sfaghihi 11:80a6facfd9f1 106
sfaghihi 11:80a6facfd9f1 107 myTFT.line(xc, yc, hx, hy, Yellow);
sfaghihi 11:80a6facfd9f1 108 myTFT.line(xc, yc, mx, my, White);
sfaghihi 11:80a6facfd9f1 109 myTFT.line(xc, yc, sx, sy, Orange);
sfaghihi 11:80a6facfd9f1 110
amilner1 5:fe6910712822 111
amilner1 5:fe6910712822 112 }
amilner1 5:fe6910712822 113
sfaghihi 11:80a6facfd9f1 114 void Display::drawClockBig(TimeClass *time, bool face, TimeClass *prevTime)
sfaghihi 8:e7fce7d9ebdd 115 {
sfaghihi 8:e7fce7d9ebdd 116 int xc = myTFT.width()/2;
sfaghihi 8:e7fce7d9ebdd 117 int yc = myTFT.height()/2;
sfaghihi 11:80a6facfd9f1 118 int r = (myTFT.height()*5)/12;
sfaghihi 11:80a6facfd9f1 119 if (face) {
sfaghihi 11:80a6facfd9f1 120 myTFT.circle(xc, yc, r, White); // clock circle
sfaghihi 11:80a6facfd9f1 121 for (int i = 0; i < 12; i++)
sfaghihi 11:80a6facfd9f1 122 myTFT.line(xc+6*r/7*sin((float)i*M_PI/6.0), yc-6*r/7*cos((float)i*M_PI/6.0),
sfaghihi 8:e7fce7d9ebdd 123 xc + r*sin((float)i*M_PI/6.0), yc-r*cos((float)i*M_PI/6.0), 0xFFFFFF);
sfaghihi 11:80a6facfd9f1 124 }
sfaghihi 8:e7fce7d9ebdd 125
sfaghihi 8:e7fce7d9ebdd 126 //LOG("SO Near: %x\r\n", (void *)time);
sfaghihi 8:e7fce7d9ebdd 127 float h = time->hour % 12;
sfaghihi 8:e7fce7d9ebdd 128 float m = time->minute;
sfaghihi 8:e7fce7d9ebdd 129 float s = time->second;
sfaghihi 8:e7fce7d9ebdd 130 float htheta = (M_PI/6.0)*(h + (m/60.0) + (s/3600.0)); // hour hand angle
sfaghihi 8:e7fce7d9ebdd 131 float mtheta = (M_PI/6.0)*(m + (s/60.0))/5.0; // minute hand angle
sfaghihi 8:e7fce7d9ebdd 132 float stheta = (M_PI/6.0)*s/5.0; // second hand angle
sfaghihi 8:e7fce7d9ebdd 133 int hx = xc + r*sin(htheta)/4.5; // hour hand position
sfaghihi 8:e7fce7d9ebdd 134 int hy = yc - r*cos(htheta)/4.5; //
sfaghihi 8:e7fce7d9ebdd 135 int mx = xc + r*sin(mtheta)/1.9; // minute hand position
sfaghihi 8:e7fce7d9ebdd 136 int my = yc - r*cos(mtheta)/1.9; //
sfaghihi 8:e7fce7d9ebdd 137 int sx = xc + r*sin(stheta)/1.5; // second hand position
sfaghihi 8:e7fce7d9ebdd 138 int sy = yc - r*cos(stheta)/1.5; //
sfaghihi 11:80a6facfd9f1 139
sfaghihi 11:80a6facfd9f1 140 float ps = prevTime->second;
sfaghihi 11:80a6facfd9f1 141 float pm = prevTime->minute;
sfaghihi 11:80a6facfd9f1 142 float ph = prevTime->hour % 12;
sfaghihi 11:80a6facfd9f1 143 float hp_the = (M_PI/6.0)*(ph + (pm/60.0) + (ps/3600.0));
sfaghihi 11:80a6facfd9f1 144 float mp_the = (M_PI/6.0)*(pm + (ps/60.0))/5.0;
sfaghihi 11:80a6facfd9f1 145 float sp_the = (M_PI/6.0)*ps/5.0;
sfaghihi 11:80a6facfd9f1 146 int hxp = xc + r*sin(hp_the)/4.5;
sfaghihi 11:80a6facfd9f1 147 int hyp = yc - r*cos(hp_the)/4.5; //
sfaghihi 11:80a6facfd9f1 148 int mxp = xc + r*sin(mp_the)/1.9; // minute hand position
sfaghihi 11:80a6facfd9f1 149 int myp = yc - r*cos(mp_the)/1.9; //
sfaghihi 11:80a6facfd9f1 150 int sxp = xc + r*sin(sp_the)/1.5; // second hand position
sfaghihi 11:80a6facfd9f1 151 int syp = yc - r*cos(sp_the)/1.5;
sfaghihi 11:80a6facfd9f1 152
sfaghihi 12:dd5d8eea2e47 153 if (syp != sy || sxp != sx || face) {
sfaghihi 11:80a6facfd9f1 154 myTFT.line(xc, yc, sxp, syp, Black);
sfaghihi 8:e7fce7d9ebdd 155 }
sfaghihi 8:e7fce7d9ebdd 156
sfaghihi 12:dd5d8eea2e47 157 if (myp != my || mxp != mx || face) {
sfaghihi 11:80a6facfd9f1 158 myTFT.line(xc, yc, mxp, myp, Black);
sfaghihi 11:80a6facfd9f1 159 }
sfaghihi 11:80a6facfd9f1 160
sfaghihi 12:dd5d8eea2e47 161 if (hyp != hy || hxp != hx || face) {
sfaghihi 11:80a6facfd9f1 162 myTFT.line(xc, yc, hxp, hyp, Black);
sfaghihi 11:80a6facfd9f1 163 }
sfaghihi 11:80a6facfd9f1 164
sfaghihi 11:80a6facfd9f1 165 myTFT.line(xc, yc, hx, hy, Yellow);
sfaghihi 11:80a6facfd9f1 166 myTFT.line(xc, yc, mx, my, White);
sfaghihi 11:80a6facfd9f1 167 myTFT.line(xc, yc, sx, sy, Orange);
sfaghihi 11:80a6facfd9f1 168
sfaghihi 10:e5bcd9088d5d 169 }
sfaghihi 8:e7fce7d9ebdd 170
sfaghihi 9:c10fb4ac8aa7 171 char *month_names[] =
sfaghihi 9:c10fb4ac8aa7 172 {
sfaghihi 9:c10fb4ac8aa7 173 "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.",
sfaghihi 9:c10fb4ac8aa7 174 "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."
sfaghihi 9:c10fb4ac8aa7 175 };
sfaghihi 9:c10fb4ac8aa7 176 char *dow_names[] =
sfaghihi 9:c10fb4ac8aa7 177 {
sfaghihi 9:c10fb4ac8aa7 178 "Sunday", "Monday", "Tuesday", "Wednesday",
sfaghihi 9:c10fb4ac8aa7 179 "Thursday", "Friday", "Saturday"
sfaghihi 9:c10fb4ac8aa7 180 };
sfaghihi 9:c10fb4ac8aa7 181
sfaghihi 10:e5bcd9088d5d 182 void Display::cls()
sfaghihi 10:e5bcd9088d5d 183 {
sfaghihi 10:e5bcd9088d5d 184 myTFT.fillrect(0, 0, myTFT.width(), myTFT.height(), Black);
sfaghihi 10:e5bcd9088d5d 185 }
sfaghihi 9:c10fb4ac8aa7 186
amilner1 5:fe6910712822 187 void Display::drawDate(DateClass *date)
amilner1 5:fe6910712822 188 {
sfaghihi 8:e7fce7d9ebdd 189 /*int d = date->day;
sfaghihi 7:5269fbadd5d7 190 int m = date->month;
sfaghihi 8:e7fce7d9ebdd 191 int y = date->year;*/
sfaghihi 10:e5bcd9088d5d 192 //LOG("IN Date\r\n");
sfaghihi 9:c10fb4ac8aa7 193 //myTFT.set_font((unsigned char*)Arial28x28);
sfaghihi 13:334c591a982b 194 myTFT.fillrect(0, 185, 50, myTFT.height(), Black);
sfaghihi 13:334c591a982b 195 myTFT.foreground(Orange);
sfaghihi 12:dd5d8eea2e47 196 myTFT.locate(20,190);
sfaghihi 10:e5bcd9088d5d 197 printf("%s\n", dow_names[date->dow]);
sfaghihi 10:e5bcd9088d5d 198 //LOG("OUTDATE\r\n");
sfaghihi 10:e5bcd9088d5d 199 //myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 12:dd5d8eea2e47 200 myTFT.locate(20,210);
sfaghihi 10:e5bcd9088d5d 201 printf("%d %s %d\n", date->day, month_names[(date->month)-1], date->year);
sfaghihi 13:334c591a982b 202 myTFT.foreground(White);
sfaghihi 13:334c591a982b 203 }
sfaghihi 13:334c591a982b 204
sfaghihi 14:85c51b4eff4b 205 void Display::drawImg(int x, int y, const unsigned char *img, int w, int h)
sfaghihi 13:334c591a982b 206 {
sfaghihi 13:334c591a982b 207 for (int i = 0; i < w; i++)
sfaghihi 13:334c591a982b 208 for (int j = 0; j < h; j++)
sfaghihi 13:334c591a982b 209 myTFT.pixel(x+i, y+j, (int)((((int)img[2*(w*j+i)]) << 8) & 0xff00) | ((int)img[2*(w*j+i)+1]&0xff));
sfaghihi 7:5269fbadd5d7 210 }
sfaghihi 7:5269fbadd5d7 211
sfaghihi 13:334c591a982b 212 void Display::drawWeather(WeatherClass *data, bool draw_img)
sfaghihi 7:5269fbadd5d7 213 {
amilner1 15:452425c099ef 214 //if (draw_img)
amilner1 15:452425c099ef 215 // if (data->type == sunny)
amilner1 15:452425c099ef 216 // drawImg(200, 10, sunny_pic.pixel_data, sunny_pic.width, sunny_pic.height);
sfaghihi 13:334c591a982b 217 myTFT.fillrect(200, 115, 200+70, 115+70, Black);
sfaghihi 14:85c51b4eff4b 218 //myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 13:334c591a982b 219 myTFT.foreground(Yellow);
sfaghihi 13:334c591a982b 220 myTFT.locate(210, 120);
sfaghihi 14:85c51b4eff4b 221 printf("%s\n", data->place);
sfaghihi 13:334c591a982b 222 myTFT.locate(220, 140);
sfaghihi 13:334c591a982b 223 myTFT.set_font((unsigned char*)Arial28x28);
sfaghihi 13:334c591a982b 224 printf("%d %s\n", data->temp, data->isCelsius ? "C" : "F");
sfaghihi 13:334c591a982b 225 myTFT.foreground(White);
sfaghihi 13:334c591a982b 226 myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 7:5269fbadd5d7 227
sfaghihi 7:5269fbadd5d7 228 }
sfaghihi 7:5269fbadd5d7 229
sfaghihi 7:5269fbadd5d7 230 void Display::drawAlarm(TimeClass *alarmTime)
sfaghihi 7:5269fbadd5d7 231 {
sfaghihi 7:5269fbadd5d7 232
sfaghihi 7:5269fbadd5d7 233 }
sfaghihi 7:5269fbadd5d7 234
sfaghihi 11:80a6facfd9f1 235 void Display::drawAll(StateClass *state, bool doCls)
sfaghihi 7:5269fbadd5d7 236 {
sfaghihi 11:80a6facfd9f1 237 if (doCls)
sfaghihi 11:80a6facfd9f1 238 cls();
sfaghihi 8:e7fce7d9ebdd 239 if (!(state->screenActive))
sfaghihi 7:5269fbadd5d7 240 return;
sfaghihi 10:e5bcd9088d5d 241 if (state->screenState == 0) {
sfaghihi 11:80a6facfd9f1 242 drawClock(state->time, true, state->prevTime);
sfaghihi 12:dd5d8eea2e47 243 drawDate(state->date);
sfaghihi 13:334c591a982b 244 drawWeather(state->weather, true);
sfaghihi 10:e5bcd9088d5d 245 if (state->alarm)
sfaghihi 10:e5bcd9088d5d 246 drawAlarm(state->alarm);
sfaghihi 10:e5bcd9088d5d 247 } else if (state->screenState == 1) {
sfaghihi 11:80a6facfd9f1 248 drawClockBig(state->time, true, state->prevTime);
sfaghihi 8:e7fce7d9ebdd 249 }
sfaghihi 2:56a27b66d03a 250 }