4180

Dependencies:   mbed mbed-rtos PinDetect

Committer:
rpavoor3
Date:
Mon Apr 27 23:18:38 2020 +0000
Revision:
0:0ca943ce4014
4180 Your Fitness Buddy

Who changed what in which revision?

UserRevisionLine numberNew 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 }