4180
Dependencies: mbed mbed-rtos PinDetect
main.cpp@0:0ca943ce4014, 2020-04-27 (annotated)
- Committer:
- rpavoor3
- Date:
- Mon Apr 27 23:18:38 2020 +0000
- Revision:
- 0:0ca943ce4014
4180 Your Fitness Buddy
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rpavoor3 | 0:0ca943ce4014 | 1 | #include "mbed.h" |
rpavoor3 | 0:0ca943ce4014 | 2 | #include "uLCD_4DGL.h" |
rpavoor3 | 0:0ca943ce4014 | 3 | #include "ultrasonic.h" |
rpavoor3 | 0:0ca943ce4014 | 4 | #include "rtos.h" |
rpavoor3 | 0:0ca943ce4014 | 5 | #include "PinDetect.h" |
rpavoor3 | 0:0ca943ce4014 | 6 | #include "PowerControl/PowerControl.h" |
rpavoor3 | 0:0ca943ce4014 | 7 | #include "PowerControl/EthernetPowerControl.h" |
rpavoor3 | 0:0ca943ce4014 | 8 | #include <time.h> |
rpavoor3 | 0:0ca943ce4014 | 9 | #include <string> |
rpavoor3 | 0:0ca943ce4014 | 10 | #include <sstream> |
rpavoor3 | 0:0ca943ce4014 | 11 | |
rpavoor3 | 0:0ca943ce4014 | 12 | uLCD_4DGL uLCD(p28, p27, p29); // serial tx, serial rx, reset pin; |
rpavoor3 | 0:0ca943ce4014 | 13 | |
rpavoor3 | 0:0ca943ce4014 | 14 | DigitalOut led1(LED1); |
rpavoor3 | 0:0ca943ce4014 | 15 | Serial pc(USBTX, USBRX); |
rpavoor3 | 0:0ca943ce4014 | 16 | PinDetect pb(p25); |
rpavoor3 | 0:0ca943ce4014 | 17 | Mutex howMany; |
rpavoor3 | 0:0ca943ce4014 | 18 | //Ticker checkTime; |
rpavoor3 | 0:0ca943ce4014 | 19 | //HistoryCache timeConverter; |
rpavoor3 | 0:0ca943ce4014 | 20 | |
rpavoor3 | 0:0ca943ce4014 | 21 | int year, month, day, hr, mn, sec; |
rpavoor3 | 0:0ca943ce4014 | 22 | |
rpavoor3 | 0:0ca943ce4014 | 23 | int howManyTodayold = 0; |
rpavoor3 | 0:0ca943ce4014 | 24 | int howManyToday = 0; |
rpavoor3 | 0:0ca943ce4014 | 25 | int dailyLimit; |
rpavoor3 | 0:0ca943ce4014 | 26 | int increment = 20; // DEFAULT: USE DATABASE TO UPDATE THE AMOUNT |
rpavoor3 | 0:0ca943ce4014 | 27 | std::string foodName = ""; // so save the food name |
rpavoor3 | 0:0ca943ce4014 | 28 | std::string macro = ""; // to save user's desired macro |
rpavoor3 | 0:0ca943ce4014 | 29 | std::string daily = ""; // to save daily amount |
rpavoor3 | 0:0ca943ce4014 | 30 | std:: string stringTime = ""; // to save current time and date |
rpavoor3 | 0:0ca943ce4014 | 31 | std:: string todayIs = ""; |
rpavoor3 | 0:0ca943ce4014 | 32 | |
rpavoor3 | 0:0ca943ce4014 | 33 | |
rpavoor3 | 0:0ca943ce4014 | 34 | void updateTime(){ |
rpavoor3 | 0:0ca943ce4014 | 35 | time_t curTime = time(NULL); |
rpavoor3 | 0:0ca943ce4014 | 36 | std:: string test = asctime(localtime(&curTime)); |
rpavoor3 | 0:0ca943ce4014 | 37 | if (todayIs.compare(test.substr(0,3)) != 0){ |
rpavoor3 | 0:0ca943ce4014 | 38 | howManyToday = 0; |
rpavoor3 | 0:0ca943ce4014 | 39 | todayIs = test.substr(0,3); |
rpavoor3 | 0:0ca943ce4014 | 40 | } |
rpavoor3 | 0:0ca943ce4014 | 41 | |
rpavoor3 | 0:0ca943ce4014 | 42 | |
rpavoor3 | 0:0ca943ce4014 | 43 | } |
rpavoor3 | 0:0ca943ce4014 | 44 | |
rpavoor3 | 0:0ca943ce4014 | 45 | time_t asUnixTime(int year, int mon, int mday, int hour, int min, int sec) { |
rpavoor3 | 0:0ca943ce4014 | 46 | struct tm t; |
rpavoor3 | 0:0ca943ce4014 | 47 | t.tm_year = year - 1900; |
rpavoor3 | 0:0ca943ce4014 | 48 | t.tm_mon = mon - 1; // convert to 0 based month |
rpavoor3 | 0:0ca943ce4014 | 49 | t.tm_mday = mday; |
rpavoor3 | 0:0ca943ce4014 | 50 | t.tm_hour = hour; |
rpavoor3 | 0:0ca943ce4014 | 51 | t.tm_min = min; |
rpavoor3 | 0:0ca943ce4014 | 52 | t.tm_sec = sec; |
rpavoor3 | 0:0ca943ce4014 | 53 | t.tm_isdst = -1; // Is Daylight saving time on? 1 = yes, 0 = no, -1 = unknown |
rpavoor3 | 0:0ca943ce4014 | 54 | |
rpavoor3 | 0:0ca943ce4014 | 55 | return mktime(&t); // returns seconds elapsed since January 1, 1970 (begin of the Epoch) |
rpavoor3 | 0:0ca943ce4014 | 56 | } |
rpavoor3 | 0:0ca943ce4014 | 57 | |
rpavoor3 | 0:0ca943ce4014 | 58 | void dist(int distance) |
rpavoor3 | 0:0ca943ce4014 | 59 | { |
rpavoor3 | 0:0ca943ce4014 | 60 | //put code here to execute when the distance has changed |
rpavoor3 | 0:0ca943ce4014 | 61 | led1 = !led1; |
rpavoor3 | 0:0ca943ce4014 | 62 | howMany.lock(); |
rpavoor3 | 0:0ca943ce4014 | 63 | if (howManyToday != howManyTodayold) { |
rpavoor3 | 0:0ca943ce4014 | 64 | updateTime(); |
rpavoor3 | 0:0ca943ce4014 | 65 | if (howManyToday >= dailyLimit) { |
rpavoor3 | 0:0ca943ce4014 | 66 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 67 | uLCD.text_width(2); |
rpavoor3 | 0:0ca943ce4014 | 68 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 69 | uLCD.filled_rectangle(0,0,127,127,RED); |
rpavoor3 | 0:0ca943ce4014 | 70 | uLCD.filled_rectangle(15,10,110,90,0x50C878); |
rpavoor3 | 0:0ca943ce4014 | 71 | uLCD.textbackground_color(0x50C878); |
rpavoor3 | 0:0ca943ce4014 | 72 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 73 | uLCD.locate(2,1); |
rpavoor3 | 0:0ca943ce4014 | 74 | uLCD.printf("Hello!"); |
rpavoor3 | 0:0ca943ce4014 | 75 | uLCD.locate(3,3); |
rpavoor3 | 0:0ca943ce4014 | 76 | uLCD.text_width(1); |
rpavoor3 | 0:0ca943ce4014 | 77 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 78 | uLCD.printf("%d / %d\n", howManyToday, dailyLimit); |
rpavoor3 | 0:0ca943ce4014 | 79 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 80 | uLCD.text_width(1); |
rpavoor3 | 0:0ca943ce4014 | 81 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 82 | uLCD.textbackground_color(RED); |
rpavoor3 | 0:0ca943ce4014 | 83 | uLCD.locate(6,14); |
rpavoor3 | 0:0ca943ce4014 | 84 | uLCD.printf("%s", macro); |
rpavoor3 | 0:0ca943ce4014 | 85 | |
rpavoor3 | 0:0ca943ce4014 | 86 | |
rpavoor3 | 0:0ca943ce4014 | 87 | } else { |
rpavoor3 | 0:0ca943ce4014 | 88 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 89 | uLCD.text_width(2); |
rpavoor3 | 0:0ca943ce4014 | 90 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 91 | uLCD.filled_rectangle(0,0,127,127,0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 92 | uLCD.filled_rectangle(15,10,110,90,0x50C878); |
rpavoor3 | 0:0ca943ce4014 | 93 | uLCD.textbackground_color(0x50C878); |
rpavoor3 | 0:0ca943ce4014 | 94 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 95 | uLCD.locate(2,1); |
rpavoor3 | 0:0ca943ce4014 | 96 | uLCD.printf("Hello!"); |
rpavoor3 | 0:0ca943ce4014 | 97 | uLCD.locate(3,3); |
rpavoor3 | 0:0ca943ce4014 | 98 | uLCD.text_width(1); |
rpavoor3 | 0:0ca943ce4014 | 99 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 100 | uLCD.printf("%d / %d\n", howManyToday, dailyLimit); |
rpavoor3 | 0:0ca943ce4014 | 101 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 102 | uLCD.text_width(1); |
rpavoor3 | 0:0ca943ce4014 | 103 | uLCD.text_height(1); |
rpavoor3 | 0:0ca943ce4014 | 104 | uLCD.locate(6,14); |
rpavoor3 | 0:0ca943ce4014 | 105 | uLCD.textbackground_color(0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 106 | uLCD.printf("%s", macro); |
rpavoor3 | 0:0ca943ce4014 | 107 | |
rpavoor3 | 0:0ca943ce4014 | 108 | } |
rpavoor3 | 0:0ca943ce4014 | 109 | howManyTodayold = howManyToday; |
rpavoor3 | 0:0ca943ce4014 | 110 | } |
rpavoor3 | 0:0ca943ce4014 | 111 | howMany.unlock(); |
rpavoor3 | 0:0ca943ce4014 | 112 | //pc.printf("Distance %d mm\r\n", distance); |
rpavoor3 | 0:0ca943ce4014 | 113 | } |
rpavoor3 | 0:0ca943ce4014 | 114 | |
rpavoor3 | 0:0ca943ce4014 | 115 | |
rpavoor3 | 0:0ca943ce4014 | 116 | ultrasonic mu(p12, p13, .1, 1, &dist); //Set the trigger pin to D12 and the echo pin to D13 |
rpavoor3 | 0:0ca943ce4014 | 117 | //have updates every .1 seconds and a timeout after 1 |
rpavoor3 | 0:0ca943ce4014 | 118 | //second, and call dist when the distance changes |
rpavoor3 | 0:0ca943ce4014 | 119 | |
rpavoor3 | 0:0ca943ce4014 | 120 | |
rpavoor3 | 0:0ca943ce4014 | 121 | void updateHowManyToday(void) { |
rpavoor3 | 0:0ca943ce4014 | 122 | if (mu.getCurrentDistance() < 50) { |
rpavoor3 | 0:0ca943ce4014 | 123 | howMany.lock(); |
rpavoor3 | 0:0ca943ce4014 | 124 | howManyTodayold = howManyToday; |
rpavoor3 | 0:0ca943ce4014 | 125 | howManyToday = howManyToday + increment; |
rpavoor3 | 0:0ca943ce4014 | 126 | howMany.unlock(); |
rpavoor3 | 0:0ca943ce4014 | 127 | } |
rpavoor3 | 0:0ca943ce4014 | 128 | |
rpavoor3 | 0:0ca943ce4014 | 129 | |
rpavoor3 | 0:0ca943ce4014 | 130 | } |
rpavoor3 | 0:0ca943ce4014 | 131 | |
rpavoor3 | 0:0ca943ce4014 | 132 | int main() |
rpavoor3 | 0:0ca943ce4014 | 133 | { |
rpavoor3 | 0:0ca943ce4014 | 134 | bool startUp = 1, name = 1, limit = 1, settingTime = 1; |
rpavoor3 | 0:0ca943ce4014 | 135 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 136 | uLCD.filled_rectangle(0,0,127,127,0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 137 | uLCD.line(0, 9, 127, 9, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 138 | uLCD.filled_rectangle(0,0,127,9,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 139 | uLCD.line(0, 118, 127, 118, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 140 | uLCD.filled_rectangle(0,118,127,127,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 141 | uLCD.textbackground_color(0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 142 | uLCD.color(DGREY); |
rpavoor3 | 0:0ca943ce4014 | 143 | uLCD.text_height(1.80); |
rpavoor3 | 0:0ca943ce4014 | 144 | |
rpavoor3 | 0:0ca943ce4014 | 145 | uLCD.locate(4,2); |
rpavoor3 | 0:0ca943ce4014 | 146 | uLCD.printf("WELCOME!"); |
rpavoor3 | 0:0ca943ce4014 | 147 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 148 | uLCD.locate(1,4); |
rpavoor3 | 0:0ca943ce4014 | 149 | uLCD.printf("Please enter the name"); |
rpavoor3 | 0:0ca943ce4014 | 150 | uLCD.printf(" of the food."); |
rpavoor3 | 0:0ca943ce4014 | 151 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 152 | uLCD.locate(1,7); |
rpavoor3 | 0:0ca943ce4014 | 153 | |
rpavoor3 | 0:0ca943ce4014 | 154 | while (name) { |
rpavoor3 | 0:0ca943ce4014 | 155 | if (pc.readable()) { |
rpavoor3 | 0:0ca943ce4014 | 156 | char v = pc.getc(); |
rpavoor3 | 0:0ca943ce4014 | 157 | if (v == '!'){ |
rpavoor3 | 0:0ca943ce4014 | 158 | name = 0; |
rpavoor3 | 0:0ca943ce4014 | 159 | } else if (int(v) == 8) { |
rpavoor3 | 0:0ca943ce4014 | 160 | foodName.erase(foodName.end()-1); |
rpavoor3 | 0:0ca943ce4014 | 161 | } else { |
rpavoor3 | 0:0ca943ce4014 | 162 | foodName.push_back(v); |
rpavoor3 | 0:0ca943ce4014 | 163 | uLCD.printf("%c" , v); |
rpavoor3 | 0:0ca943ce4014 | 164 | } |
rpavoor3 | 0:0ca943ce4014 | 165 | } |
rpavoor3 | 0:0ca943ce4014 | 166 | } |
rpavoor3 | 0:0ca943ce4014 | 167 | |
rpavoor3 | 0:0ca943ce4014 | 168 | |
rpavoor3 | 0:0ca943ce4014 | 169 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 170 | uLCD.filled_rectangle(0,0,127,127,0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 171 | uLCD.line(0, 9, 127, 9, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 172 | uLCD.filled_rectangle(0,0,127,9,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 173 | uLCD.line(0, 118, 127, 118, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 174 | uLCD.filled_rectangle(0,118,127,127,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 175 | uLCD.textbackground_color(0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 176 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 177 | uLCD.text_height(1); |
rpavoor3 | 0:0ca943ce4014 | 178 | |
rpavoor3 | 0:0ca943ce4014 | 179 | uLCD.locate(1,1); |
rpavoor3 | 0:0ca943ce4014 | 180 | uLCD.printf("What macro are you monitoring? : \n\n1. Carbs\n2. Protein\n3. Fat \n4. Calories \n"); |
rpavoor3 | 0:0ca943ce4014 | 181 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 182 | while(startUp) { |
rpavoor3 | 0:0ca943ce4014 | 183 | if (pc.readable() ){ |
rpavoor3 | 0:0ca943ce4014 | 184 | char v = pc.getc(); |
rpavoor3 | 0:0ca943ce4014 | 185 | if (v == '1') { |
rpavoor3 | 0:0ca943ce4014 | 186 | startUp = 0; |
rpavoor3 | 0:0ca943ce4014 | 187 | macro = "Carbs"; |
rpavoor3 | 0:0ca943ce4014 | 188 | } else if (v == '2') { |
rpavoor3 | 0:0ca943ce4014 | 189 | startUp = 0; |
rpavoor3 | 0:0ca943ce4014 | 190 | macro = "Protein"; |
rpavoor3 | 0:0ca943ce4014 | 191 | } else if (v == '3') { |
rpavoor3 | 0:0ca943ce4014 | 192 | startUp = 0; |
rpavoor3 | 0:0ca943ce4014 | 193 | macro = "Fat"; |
rpavoor3 | 0:0ca943ce4014 | 194 | } else if (v == '4') { |
rpavoor3 | 0:0ca943ce4014 | 195 | startUp = 0; |
rpavoor3 | 0:0ca943ce4014 | 196 | macro = "Calories"; |
rpavoor3 | 0:0ca943ce4014 | 197 | |
rpavoor3 | 0:0ca943ce4014 | 198 | } |
rpavoor3 | 0:0ca943ce4014 | 199 | } |
rpavoor3 | 0:0ca943ce4014 | 200 | } |
rpavoor3 | 0:0ca943ce4014 | 201 | |
rpavoor3 | 0:0ca943ce4014 | 202 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 203 | uLCD.filled_rectangle(0,0,127,127,0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 204 | uLCD.line(0, 9, 127, 9, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 205 | uLCD.filled_rectangle(0,0,127,9,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 206 | uLCD.line(0, 118, 127, 118, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 207 | uLCD.filled_rectangle(0,118,127,127,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 208 | uLCD.textbackground_color(0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 209 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 210 | uLCD.locate(1,2); |
rpavoor3 | 0:0ca943ce4014 | 211 | uLCD.text_height(1); |
rpavoor3 | 0:0ca943ce4014 | 212 | |
rpavoor3 | 0:0ca943ce4014 | 213 | uLCD.printf("What will be your daily limit?\n "); |
rpavoor3 | 0:0ca943ce4014 | 214 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 215 | |
rpavoor3 | 0:0ca943ce4014 | 216 | while (limit) { |
rpavoor3 | 0:0ca943ce4014 | 217 | if (pc.readable()){ |
rpavoor3 | 0:0ca943ce4014 | 218 | char v = pc.getc(); |
rpavoor3 | 0:0ca943ce4014 | 219 | if (v == '!') { |
rpavoor3 | 0:0ca943ce4014 | 220 | limit = 0; |
rpavoor3 | 0:0ca943ce4014 | 221 | } else { |
rpavoor3 | 0:0ca943ce4014 | 222 | daily.push_back(v); |
rpavoor3 | 0:0ca943ce4014 | 223 | uLCD.printf("%c" , v); |
rpavoor3 | 0:0ca943ce4014 | 224 | } |
rpavoor3 | 0:0ca943ce4014 | 225 | } |
rpavoor3 | 0:0ca943ce4014 | 226 | |
rpavoor3 | 0:0ca943ce4014 | 227 | } |
rpavoor3 | 0:0ca943ce4014 | 228 | |
rpavoor3 | 0:0ca943ce4014 | 229 | std::istringstream iss (daily); |
rpavoor3 | 0:0ca943ce4014 | 230 | iss >> dailyLimit; |
rpavoor3 | 0:0ca943ce4014 | 231 | |
rpavoor3 | 0:0ca943ce4014 | 232 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 233 | uLCD.filled_rectangle(0,0,127,127,0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 234 | uLCD.line(0, 9, 127, 9, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 235 | uLCD.filled_rectangle(0,0,127,9,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 236 | uLCD.line(0, 118, 127, 118, GREEN); |
rpavoor3 | 0:0ca943ce4014 | 237 | uLCD.filled_rectangle(0,118,127,127,GREEN); |
rpavoor3 | 0:0ca943ce4014 | 238 | uLCD.textbackground_color(0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 239 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 240 | uLCD.text_height(1); |
rpavoor3 | 0:0ca943ce4014 | 241 | uLCD.locate(1,1); |
rpavoor3 | 0:0ca943ce4014 | 242 | uLCD.printf("Please enter date and military time\nMM/DD/YYYY HH:MM:SS)\n"); |
rpavoor3 | 0:0ca943ce4014 | 243 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 244 | |
rpavoor3 | 0:0ca943ce4014 | 245 | |
rpavoor3 | 0:0ca943ce4014 | 246 | while (settingTime) { |
rpavoor3 | 0:0ca943ce4014 | 247 | if (pc.readable()){ |
rpavoor3 | 0:0ca943ce4014 | 248 | char v = pc.getc(); |
rpavoor3 | 0:0ca943ce4014 | 249 | if (v == '!') { |
rpavoor3 | 0:0ca943ce4014 | 250 | settingTime = 0; |
rpavoor3 | 0:0ca943ce4014 | 251 | } else { |
rpavoor3 | 0:0ca943ce4014 | 252 | stringTime.push_back(v); |
rpavoor3 | 0:0ca943ce4014 | 253 | uLCD.printf("%c" , v); |
rpavoor3 | 0:0ca943ce4014 | 254 | } |
rpavoor3 | 0:0ca943ce4014 | 255 | } |
rpavoor3 | 0:0ca943ce4014 | 256 | |
rpavoor3 | 0:0ca943ce4014 | 257 | } |
rpavoor3 | 0:0ca943ce4014 | 258 | |
rpavoor3 | 0:0ca943ce4014 | 259 | |
rpavoor3 | 0:0ca943ce4014 | 260 | // CALL DATABASE ENTRY HERE using "foodName" and "macro" TO UPDATE "increment (int)" |
rpavoor3 | 0:0ca943ce4014 | 261 | |
rpavoor3 | 0:0ca943ce4014 | 262 | |
rpavoor3 | 0:0ca943ce4014 | 263 | |
rpavoor3 | 0:0ca943ce4014 | 264 | // TIME |
rpavoor3 | 0:0ca943ce4014 | 265 | // converts epoch time to day, month, year |
rpavoor3 | 0:0ca943ce4014 | 266 | std::istringstream mon (stringTime.substr(0,2)); |
rpavoor3 | 0:0ca943ce4014 | 267 | mon >> month; |
rpavoor3 | 0:0ca943ce4014 | 268 | std::istringstream d (stringTime.substr(3,2)); |
rpavoor3 | 0:0ca943ce4014 | 269 | d >> day; |
rpavoor3 | 0:0ca943ce4014 | 270 | std::istringstream y (stringTime.substr(6,4)); |
rpavoor3 | 0:0ca943ce4014 | 271 | y >> year; |
rpavoor3 | 0:0ca943ce4014 | 272 | std::istringstream h (stringTime.substr(11,2)); |
rpavoor3 | 0:0ca943ce4014 | 273 | h >> hr; |
rpavoor3 | 0:0ca943ce4014 | 274 | std::istringstream m (stringTime.substr(14,2)); |
rpavoor3 | 0:0ca943ce4014 | 275 | m >> mn; |
rpavoor3 | 0:0ca943ce4014 | 276 | std::istringstream sc (stringTime.substr(17,2)); |
rpavoor3 | 0:0ca943ce4014 | 277 | sc >> sec; |
rpavoor3 | 0:0ca943ce4014 | 278 | |
rpavoor3 | 0:0ca943ce4014 | 279 | time_t result = asUnixTime(year, month, day, hr, mn, sec); |
rpavoor3 | 0:0ca943ce4014 | 280 | |
rpavoor3 | 0:0ca943ce4014 | 281 | pc.printf("%s\n",asctime(localtime(&result))); |
rpavoor3 | 0:0ca943ce4014 | 282 | |
rpavoor3 | 0:0ca943ce4014 | 283 | set_time(result); |
rpavoor3 | 0:0ca943ce4014 | 284 | |
rpavoor3 | 0:0ca943ce4014 | 285 | todayIs = asctime(localtime(&result)); |
rpavoor3 | 0:0ca943ce4014 | 286 | todayIs = todayIs.substr(0,3); |
rpavoor3 | 0:0ca943ce4014 | 287 | |
rpavoor3 | 0:0ca943ce4014 | 288 | uLCD.cls(); |
rpavoor3 | 0:0ca943ce4014 | 289 | uLCD.filled_rectangle(0,0,127,127,0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 290 | uLCD.filled_rectangle(15,10,110,90,0x50C878); |
rpavoor3 | 0:0ca943ce4014 | 291 | uLCD.textbackground_color(0x50C878); |
rpavoor3 | 0:0ca943ce4014 | 292 | uLCD.color(BLACK); |
rpavoor3 | 0:0ca943ce4014 | 293 | uLCD.text_width(2); |
rpavoor3 | 0:0ca943ce4014 | 294 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 295 | uLCD.locate(2,1); |
rpavoor3 | 0:0ca943ce4014 | 296 | uLCD.printf("Hello!"); |
rpavoor3 | 0:0ca943ce4014 | 297 | uLCD.locate(3,3); |
rpavoor3 | 0:0ca943ce4014 | 298 | uLCD.text_width(1); |
rpavoor3 | 0:0ca943ce4014 | 299 | uLCD.text_height(2); |
rpavoor3 | 0:0ca943ce4014 | 300 | uLCD.printf("%d / %d", howManyToday, dailyLimit); |
rpavoor3 | 0:0ca943ce4014 | 301 | uLCD.color(WHITE); |
rpavoor3 | 0:0ca943ce4014 | 302 | uLCD.textbackground_color(0x86c5da); |
rpavoor3 | 0:0ca943ce4014 | 303 | uLCD.text_width(1); |
rpavoor3 | 0:0ca943ce4014 | 304 | uLCD.text_height(1); |
rpavoor3 | 0:0ca943ce4014 | 305 | uLCD.locate(6,14); |
rpavoor3 | 0:0ca943ce4014 | 306 | uLCD.printf("%s", macro); |
rpavoor3 | 0:0ca943ce4014 | 307 | |
rpavoor3 | 0:0ca943ce4014 | 308 | pc.baud(9600); |
rpavoor3 | 0:0ca943ce4014 | 309 | mu.startUpdates();//start measuring the distance |
rpavoor3 | 0:0ca943ce4014 | 310 | pb.attach_deasserted(&updateHowManyToday); |
rpavoor3 | 0:0ca943ce4014 | 311 | pb.mode(PullUp); |
rpavoor3 | 0:0ca943ce4014 | 312 | pb.setSampleFrequency(); |
rpavoor3 | 0:0ca943ce4014 | 313 | |
rpavoor3 | 0:0ca943ce4014 | 314 | //checkTime.attach(&updateTime, 10); |
rpavoor3 | 0:0ca943ce4014 | 315 | /* |
rpavoor3 | 0:0ca943ce4014 | 316 | // PWR MNGT |
rpavoor3 | 0:0ca943ce4014 | 317 | PHY_PowerDown(); |
rpavoor3 | 0:0ca943ce4014 | 318 | //Peripheral_PowerDown(0xFEF6FFCF); |
rpavoor3 | 0:0ca943ce4014 | 319 | Peripheral_PowerDown(LPC1768_PCONP_PCTIM0); // Timer/Counter 0 |
rpavoor3 | 0:0ca943ce4014 | 320 | Peripheral_PowerDown(LPC1768_PCONP_PCTIM1); // Timer/Counter 1 |
rpavoor3 | 0:0ca943ce4014 | 321 | Peripheral_PowerDown(LPC1768_PCONP_PCUART0); //UART 0 |
rpavoor3 | 0:0ca943ce4014 | 322 | Peripheral_PowerDown(LPC1768_PCONP_PCUART1); //UART 1 |
rpavoor3 | 0:0ca943ce4014 | 323 | Peripheral_PowerDown(LPC1768_PCONP_PCPWM1); // PWM |
rpavoor3 | 0:0ca943ce4014 | 324 | Peripheral_PowerDown(LPC1768_PCONP_PCI2C0); //bit 7: I2c interface |
rpavoor3 | 0:0ca943ce4014 | 325 | Peripheral_PowerDown(LPC1768_PCONP_PCSPI); //SPI |
rpavoor3 | 0:0ca943ce4014 | 326 | Peripheral_PowerDown(LPC1768_PCONP_PCRTC); //RTC |
rpavoor3 | 0:0ca943ce4014 | 327 | Peripheral_PowerDown(LPC1768_PCONP_PCSSP1); //SSP |
rpavoor3 | 0:0ca943ce4014 | 328 | |
rpavoor3 | 0:0ca943ce4014 | 329 | // bit 11: Reserved |
rpavoor3 | 0:0ca943ce4014 | 330 | |
rpavoor3 | 0:0ca943ce4014 | 331 | Peripheral_PowerDown(LPC1768_PCONP_PCADC); // bit12: A/D converter power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 332 | Peripheral_PowerDown(LPC1768_PCONP_PCCAN1); // bit 13: CAN controller 1 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 333 | Peripheral_PowerDown(LPC1768_PCONP_PCCAN2); // bit 14: CAN controller 2 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 334 | // bit 15: PCGPIO: GPIOs power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 335 | //Peripheral_PowerDown(LPC1768_PCONP_PCGPIO); |
rpavoor3 | 0:0ca943ce4014 | 336 | |
rpavoor3 | 0:0ca943ce4014 | 337 | Peripheral_PowerDown(LPC1768_PCONP_PCRIT); //bit 16: Repetitive interrupt timer power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 338 | Peripheral_PowerDown(LPC1768_PCONP_PCMCPWM); // bit 17: Motor control PWM power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 339 | Peripheral_PowerDown(LPC1768_PCONP_PCQEI); // bit 18: Quadrature encoder interface power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 340 | Peripheral_PowerDown(LPC1768_PCONP_PCI2C1); // bit 19: I2C interface 1 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 341 | |
rpavoor3 | 0:0ca943ce4014 | 342 | // bit 20: Reserved |
rpavoor3 | 0:0ca943ce4014 | 343 | Peripheral_PowerDown(LPC1768_PCONP_PCSSP0); // bit 21: PCSSP0: SSP interface 0 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 344 | Peripheral_PowerDown(LPC1768_PCONP_PCTIM2); // bit 22: PCTIM2: Timer 2 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 345 | // bit 23: PCTIM3: Timer 3 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 346 | //Peripheral_PowerDown(LPC1768_PCONP_PCQTIM3); |
rpavoor3 | 0:0ca943ce4014 | 347 | // bit 24: PCUART2: UART 2 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 348 | //Peripheral_PowerDown(LPC1768_PCONP_PCUART2); |
rpavoor3 | 0:0ca943ce4014 | 349 | |
rpavoor3 | 0:0ca943ce4014 | 350 | Peripheral_PowerDown(LPC1768_PCONP_PCUART3); // bit 25: UART 3 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 351 | Peripheral_PowerDown(LPC1768_PCONP_PCI2C2); // bit 26: I2C interface 2 power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 352 | Peripheral_PowerDown(LPC1768_PCONP_PCI2S); // bit 27: PCI2S: I2S interface power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 353 | |
rpavoor3 | 0:0ca943ce4014 | 354 | // bit 28: Reserved |
rpavoor3 | 0:0ca943ce4014 | 355 | Peripheral_PowerDown(LPC1768_PCONP_PCGPDMA); // bit 29:GP DMA function power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 356 | Peripheral_PowerDown(LPC1768_PCONP_PCENET); // bit 30:Ethernet block power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 357 | Peripheral_PowerDown(LPC1768_PCONP_PCUSB); // bit 31: PCUSB: USB interface power/clock enable |
rpavoor3 | 0:0ca943ce4014 | 358 | |
rpavoor3 | 0:0ca943ce4014 | 359 | // only BIT 23, 24, 15 need to be on, but htis ths isnt working |
rpavoor3 | 0:0ca943ce4014 | 360 | //Peripheral_PowerDown(0xFFFEFE7F); |
rpavoor3 | 0:0ca943ce4014 | 361 | //Peripheral_PowerDown(0x7BEEF677); |
rpavoor3 | 0:0ca943ce4014 | 362 | */ |
rpavoor3 | 0:0ca943ce4014 | 363 | while(1) |
rpavoor3 | 0:0ca943ce4014 | 364 | { |
rpavoor3 | 0:0ca943ce4014 | 365 | //pc.printf("Distance %d mm\r\n", mu.getCurrentDistance()); |
rpavoor3 | 0:0ca943ce4014 | 366 | Sleep(); |
rpavoor3 | 0:0ca943ce4014 | 367 | mu.checkDistance(); //call checkDistance() as much as possible, as this is where |
rpavoor3 | 0:0ca943ce4014 | 368 | //the class checks if dist needs to be called. |
rpavoor3 | 0:0ca943ce4014 | 369 | wait(0.002); |
rpavoor3 | 0:0ca943ce4014 | 370 | } |
rpavoor3 | 0:0ca943ce4014 | 371 | } |