Pinky and the Brain / Mbed OS Clock

Dependencies:   SPI_TFT_ILI9341 TFT_fonts Adafruit_RTCLib RTC-DS1307 TSI

Committer:
sfaghihi
Date:
Fri May 26 11:59:44 2017 +0000
Revision:
21:fe1769d5a01c
Parent:
19:450dbcda696e
Something (Not nothing)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amilner1 5:fe6910712822 1 #include "utility.h"
amilner1 5:fe6910712822 2
amilner1 5:fe6910712822 3
sfaghihi 8:e7fce7d9ebdd 4 TimeClass::TimeClass (int h, int m, float s)
sfaghihi 7:5269fbadd5d7 5 : hour(h), minute(m), second(s) {}
sfaghihi 7:5269fbadd5d7 6
sfaghihi 11:80a6facfd9f1 7 void TimeClass::inc(TimeClass *prev, float i) {
sfaghihi 11:80a6facfd9f1 8 prev->second = this->second;
sfaghihi 11:80a6facfd9f1 9 prev->minute = this->minute;
sfaghihi 11:80a6facfd9f1 10 prev->hour = this->hour;
sfaghihi 11:80a6facfd9f1 11 this->second += i;
sfaghihi 11:80a6facfd9f1 12 if (this->second >= 60) {
sfaghihi 11:80a6facfd9f1 13 this->second = 0;
sfaghihi 11:80a6facfd9f1 14 this->minute += 1;
sfaghihi 8:e7fce7d9ebdd 15 }
sfaghihi 7:5269fbadd5d7 16
sfaghihi 11:80a6facfd9f1 17 if (this->minute == 60) {
sfaghihi 11:80a6facfd9f1 18 this->minute = 0;
sfaghihi 11:80a6facfd9f1 19 this->hour += 1;
sfaghihi 7:5269fbadd5d7 20 }
sfaghihi 7:5269fbadd5d7 21
sfaghihi 11:80a6facfd9f1 22 if (this->hour == 24)
sfaghihi 11:80a6facfd9f1 23 this->hour = 0;
sfaghihi 7:5269fbadd5d7 24 }
amilner1 5:fe6910712822 25
amilner1 5:fe6910712822 26 DateClass::DateClass(int d, int m, int y, int dow)
sfaghihi 7:5269fbadd5d7 27 : day(d), month(m), year(y), dow(dow) {}
amilner1 5:fe6910712822 28
amilner1 15:452425c099ef 29 WeatherClass::WeatherClass(weatherType t, int tmp, bool cel, char *p)
sfaghihi 13:334c591a982b 30 : type(t), temp(tmp), isCelsius(cel), place(p) {}
sfaghihi 7:5269fbadd5d7 31
sfaghihi 11:80a6facfd9f1 32 StateClass::StateClass(TimeClass *t, TimeClass *p, WeatherClass *w, DateClass *d, TimeClass *a)
amilner1 15:452425c099ef 33 : time(t), prevTime(p), weather(w), date(d), alarm(a), screenState(0), screenActive(true), duringAlarm(false) {}
amilner1 15:452425c099ef 34
amilner1 15:452425c099ef 35
sfaghihi 21:fe1769d5a01c 36 void playAlarmSound()
amilner1 15:452425c099ef 37 {
amilner1 15:452425c099ef 38 PwmOut speaker(ALARM_PIN); // alarm sound of regular beeps
sfaghihi 21:fe1769d5a01c 39 while (programState->duringAlarm) {
amilner1 15:452425c099ef 40 speaker.period(1.0/150.0); // 150hz period
amilner1 15:452425c099ef 41 speaker =0.0125;
amilner1 15:452425c099ef 42 wait(0.5);
amilner1 15:452425c099ef 43 speaker=0.0; // turn off audio
amilner1 15:452425c099ef 44 wait(0.5);
amilner1 15:452425c099ef 45 }
sfaghihi 17:7ba6c8e4945b 46 }
sfaghihi 17:7ba6c8e4945b 47
sfaghihi 19:450dbcda696e 48 AnalogIn ain(RANGE_AN);
sfaghihi 19:450dbcda696e 49 DigitalOut cs(RANGE_CS, 0);
sfaghihi 18:2afeed90c051 50
sfaghihi 17:7ba6c8e4945b 51 bool getDistance()
sfaghihi 17:7ba6c8e4945b 52 {
sfaghihi 18:2afeed90c051 53 float adc, volts, inches;
sfaghihi 18:2afeed90c051 54 cs = 1;
sfaghihi 18:2afeed90c051 55 wait_us(30);
sfaghihi 18:2afeed90c051 56 adc = ain.read(); // read analog as a float
sfaghihi 19:450dbcda696e 57 volts = adc * 4.5; // convert to volts
sfaghihi 19:450dbcda696e 58 inches = volts / 0.0095;
sfaghihi 19:450dbcda696e 59 cs = 0;
sfaghihi 18:2afeed90c051 60 return inches <= RANGE_THRESHOLD;
sfaghihi 19:450dbcda696e 61 }
sfaghihi 19:450dbcda696e 62
sfaghihi 21:fe1769d5a01c 63 //I2C master(RTC_SDA, RTC_SCL);
sfaghihi 21:fe1769d5a01c 64 Rtc_Ds1307 rtc(RTC_SDA, RTC_SCL);
sfaghihi 19:450dbcda696e 65 void read_rtc(StateClass *ps)
sfaghihi 19:450dbcda696e 66 {
sfaghihi 21:fe1769d5a01c 67 Rtc_Ds1307::Time_rtc data = {};
sfaghihi 21:fe1769d5a01c 68 int s = 0, m = 0, h = 0, dow = 0, d = 0, mo = 0, y = 0;
sfaghihi 21:fe1769d5a01c 69 //rtc.gettime(&s, &m, &h, &dow, &d, &mo, &y);
sfaghihi 21:fe1769d5a01c 70 rtc.getTime(data);
sfaghihi 21:fe1769d5a01c 71 h = data.hour;
sfaghihi 21:fe1769d5a01c 72 m = data.min;
sfaghihi 21:fe1769d5a01c 73 s = data.sec;
sfaghihi 21:fe1769d5a01c 74 dow = data.wday - 1;
sfaghihi 21:fe1769d5a01c 75 d = data.date;
sfaghihi 21:fe1769d5a01c 76 mo = data.mon;
sfaghihi 21:fe1769d5a01c 77 y = data.year;
sfaghihi 21:fe1769d5a01c 78 LOG("%d:%d:%d", h, m, s);
sfaghihi 21:fe1769d5a01c 79 //if (!rtc.isRunning())
sfaghihi 21:fe1769d5a01c 80 // return;
sfaghihi 21:fe1769d5a01c 81 ps->time->hour = h;
sfaghihi 21:fe1769d5a01c 82 ps->prevTime->hour = h;
sfaghihi 21:fe1769d5a01c 83 ps->time->minute = m;
sfaghihi 21:fe1769d5a01c 84 ps->prevTime->minute = m;
sfaghihi 21:fe1769d5a01c 85 ps->time->second = s;
sfaghihi 21:fe1769d5a01c 86 ps->prevTime->second = s;
sfaghihi 21:fe1769d5a01c 87 ps->date->year = y;
sfaghihi 21:fe1769d5a01c 88 ps->date->day = d;
sfaghihi 21:fe1769d5a01c 89 ps->date->month = mo;
sfaghihi 21:fe1769d5a01c 90 ps->date->dow = dow-1;
sfaghihi 19:450dbcda696e 91 }
sfaghihi 19:450dbcda696e 92
sfaghihi 19:450dbcda696e 93 void update_rtc(StateClass *ps)
sfaghihi 19:450dbcda696e 94 {
sfaghihi 21:fe1769d5a01c 95 //DateTime data(ps->date->year, ps->date->month, ps->date->day, ps->time->hour, ps->time->minute, ps->time->second);
sfaghihi 21:fe1769d5a01c 96 //rtc.adjust(data);
amilner1 15:452425c099ef 97 }