header file

Dependencies:   N5110 PowerControl SRF02 beep mbed

Committer:
probrania7
Date:
Tue May 05 00:39:32 2015 +0000
Revision:
0:7a82ad48df33
Child:
1:920749af1300
rev1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
probrania7 0:7a82ad48df33 1 #include "mbed.h"
probrania7 0:7a82ad48df33 2 #include "N5110.h"
probrania7 0:7a82ad48df33 3 #include "beep.h"
probrania7 0:7a82ad48df33 4 #include "SRF02.h"
probrania7 0:7a82ad48df33 5 #include "timeMgr.h"
probrania7 0:7a82ad48df33 6
probrania7 0:7a82ad48df33 7
probrania7 0:7a82ad48df33 8 // VCC,SCE,RST,D/C,MOSI,SCLK,LED
probrania7 0:7a82ad48df33 9 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
probrania7 0:7a82ad48df33 10 // Can also power (VCC) directly from VOUT (3.3 V) -
probrania7 0:7a82ad48df33 11 // Can give better performance due to current limitation from GPIO pin
probrania7 0:7a82ad48df33 12
probrania7 0:7a82ad48df33 13 // SDA, SCL
probrania7 0:7a82ad48df33 14 SRF02 sensor(p28,p27);
probrania7 0:7a82ad48df33 15
probrania7 0:7a82ad48df33 16 Beep beep1(p21);
probrania7 0:7a82ad48df33 17 AnalogIn potIn (p20);
probrania7 0:7a82ad48df33 18
probrania7 0:7a82ad48df33 19 DigitalOut Led1 (p24);
probrania7 0:7a82ad48df33 20 DigitalOut Led2 (p14);
probrania7 0:7a82ad48df33 21 DigitalOut Led3 (p25);
probrania7 0:7a82ad48df33 22 DigitalOut Led4 (p23);
probrania7 0:7a82ad48df33 23 //=========================
probrania7 0:7a82ad48df33 24 InterruptIn button1 (p17);
probrania7 0:7a82ad48df33 25 InterruptIn button2 (p29);
probrania7 0:7a82ad48df33 26 InterruptIn button3 (p30);
probrania7 0:7a82ad48df33 27
probrania7 0:7a82ad48df33 28
probrania7 0:7a82ad48df33 29 //===============================
probrania7 0:7a82ad48df33 30 int button1Flag = 0;
probrania7 0:7a82ad48df33 31 int button2Flag = 0;
probrania7 0:7a82ad48df33 32 int button3Flag = 0;
probrania7 0:7a82ad48df33 33 int msgFlag = 1;
probrania7 0:7a82ad48df33 34
probrania7 0:7a82ad48df33 35 //function declarations
probrania7 0:7a82ad48df33 36 //=========================
probrania7 0:7a82ad48df33 37 void introMessage();
probrania7 0:7a82ad48df33 38 void endMessage();
probrania7 0:7a82ad48df33 39 void errorHandler();
probrania7 0:7a82ad48df33 40 void menu();
probrania7 0:7a82ad48df33 41 void demo();
probrania7 0:7a82ad48df33 42 void cursorSelect(int, int, int, int);
probrania7 0:7a82ad48df33 43 void cursorMove(int);
probrania7 0:7a82ad48df33 44 void beeper(float, float);
probrania7 0:7a82ad48df33 45 void introMessageTimer();
probrania7 0:7a82ad48df33 46 void menuLevel(float);
probrania7 0:7a82ad48df33 47 void startMessage();
probrania7 0:7a82ad48df33 48 void displayClock();
probrania7 0:7a82ad48df33 49 //====================================
probrania7 0:7a82ad48df33 50 void distMeasure();
probrania7 0:7a82ad48df33 51 void saveData();
probrania7 0:7a82ad48df33 52 void adjustBrightness(float);
probrania7 0:7a82ad48df33 53 void systemTest();
probrania7 0:7a82ad48df33 54 //------------------------
probrania7 0:7a82ad48df33 55 void button1Pressed();
probrania7 0:7a82ad48df33 56 void button2Pressed();
probrania7 0:7a82ad48df33 57 void button3Pressed();
probrania7 0:7a82ad48df33 58 //Global variables initialisation
probrania7 0:7a82ad48df33 59 //=================================
probrania7 0:7a82ad48df33 60 //Timer introTimer;
probrania7 0:7a82ad48df33 61
probrania7 0:7a82ad48df33 62 int menuLevelFlag = 0;
probrania7 0:7a82ad48df33 63 int brightFlag = 0;
probrania7 0:7a82ad48df33 64 int distFlag = 0;
probrania7 0:7a82ad48df33 65 int clockFlag = 0;
probrania7 0:7a82ad48df33 66 //------------------------------
probrania7 0:7a82ad48df33 67
probrania7 0:7a82ad48df33 68
probrania7 0:7a82ad48df33 69 int main()
probrania7 0:7a82ad48df33 70 {
probrania7 0:7a82ad48df33 71 // first need to initialise display
probrania7 0:7a82ad48df33 72 lcd.init();
probrania7 0:7a82ad48df33 73
probrania7 0:7a82ad48df33 74 // button2.rise(&button2Pressed);
probrania7 0:7a82ad48df33 75
probrania7 0:7a82ad48df33 76 beeper(1000, 0.5);
probrania7 0:7a82ad48df33 77
probrania7 0:7a82ad48df33 78 serial.attach(&serialISR); // attach serial ISR
probrania7 0:7a82ad48df33 79
probrania7 0:7a82ad48df33 80 set_time(1424535031); // initialise time to 1st January 1970
probrania7 0:7a82ad48df33 81
probrania7 0:7a82ad48df33 82
probrania7 0:7a82ad48df33 83 introMessage();
probrania7 0:7a82ad48df33 84
probrania7 0:7a82ad48df33 85 button1.rise(&button1Pressed);
probrania7 0:7a82ad48df33 86 button3.rise(&button3Pressed);
probrania7 0:7a82ad48df33 87 //-----------------------------------------------------
probrania7 0:7a82ad48df33 88
probrania7 0:7a82ad48df33 89 //-----------------------------------------------------
probrania7 0:7a82ad48df33 90
probrania7 0:7a82ad48df33 91 while(1)
probrania7 0:7a82ad48df33 92 {
probrania7 0:7a82ad48df33 93 if (msgFlag)
probrania7 0:7a82ad48df33 94 {
probrania7 0:7a82ad48df33 95 startMessage();
probrania7 0:7a82ad48df33 96 }
probrania7 0:7a82ad48df33 97
probrania7 0:7a82ad48df33 98 if (button1Flag)
probrania7 0:7a82ad48df33 99 {
probrania7 0:7a82ad48df33 100 msgFlag=0;
probrania7 0:7a82ad48df33 101 menu();
probrania7 0:7a82ad48df33 102 menuLevelFlag = 1;
probrania7 0:7a82ad48df33 103 }
probrania7 0:7a82ad48df33 104
probrania7 0:7a82ad48df33 105 if (menuLevelFlag)
probrania7 0:7a82ad48df33 106 {
probrania7 0:7a82ad48df33 107 button1Flag =0;
probrania7 0:7a82ad48df33 108 menuLevel(potIn);
probrania7 0:7a82ad48df33 109 }
probrania7 0:7a82ad48df33 110
probrania7 0:7a82ad48df33 111 if (distFlag)
probrania7 0:7a82ad48df33 112 {
probrania7 0:7a82ad48df33 113 menuLevelFlag = 0;
probrania7 0:7a82ad48df33 114 distMeasure();
probrania7 0:7a82ad48df33 115 if(button1)
probrania7 0:7a82ad48df33 116 {
probrania7 0:7a82ad48df33 117 distFlag = 0;
probrania7 0:7a82ad48df33 118 }
probrania7 0:7a82ad48df33 119
probrania7 0:7a82ad48df33 120 }
probrania7 0:7a82ad48df33 121
probrania7 0:7a82ad48df33 122 if (brightFlag)
probrania7 0:7a82ad48df33 123 {
probrania7 0:7a82ad48df33 124 menuLevelFlag = 0;
probrania7 0:7a82ad48df33 125 adjustBrightness(potIn);
probrania7 0:7a82ad48df33 126 if (button1)
probrania7 0:7a82ad48df33 127 {
probrania7 0:7a82ad48df33 128 brightFlag = 0;
probrania7 0:7a82ad48df33 129 }
probrania7 0:7a82ad48df33 130 }
probrania7 0:7a82ad48df33 131 if (clockFlag)
probrania7 0:7a82ad48df33 132 {
probrania7 0:7a82ad48df33 133 menuLevelFlag = 0;
probrania7 0:7a82ad48df33 134 displayClock();
probrania7 0:7a82ad48df33 135 if (button1)
probrania7 0:7a82ad48df33 136 {
probrania7 0:7a82ad48df33 137 clockFlag = 0;
probrania7 0:7a82ad48df33 138 }
probrania7 0:7a82ad48df33 139 }
probrania7 0:7a82ad48df33 140 }
probrania7 0:7a82ad48df33 141 }
probrania7 0:7a82ad48df33 142
probrania7 0:7a82ad48df33 143 void introMessage()
probrania7 0:7a82ad48df33 144 {
probrania7 0:7a82ad48df33 145 //introducto text a
probrania7 0:7a82ad48df33 146 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 0:7a82ad48df33 147 lcd.printString("Ultrasonic",13,1);
probrania7 0:7a82ad48df33 148 lcd.printString("Distance",18,2);
probrania7 0:7a82ad48df33 149 lcd.printString("Sensor",23,3);
probrania7 0:7a82ad48df33 150 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 0:7a82ad48df33 151
probrania7 0:7a82ad48df33 152 wait(1.3);
probrania7 0:7a82ad48df33 153 lcd.clear();
probrania7 0:7a82ad48df33 154
probrania7 0:7a82ad48df33 155 //introductory text b
probrania7 0:7a82ad48df33 156 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 0:7a82ad48df33 157 lcd.printString("University",13,1);
probrania7 0:7a82ad48df33 158 lcd.printString("Of",35,2);
probrania7 0:7a82ad48df33 159 lcd.printString("Leeds",26,3);
probrania7 0:7a82ad48df33 160 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 0:7a82ad48df33 161
probrania7 0:7a82ad48df33 162 wait(1.3);
probrania7 0:7a82ad48df33 163 lcd.clear();
probrania7 0:7a82ad48df33 164
probrania7 0:7a82ad48df33 165 //introductory text c
probrania7 0:7a82ad48df33 166 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 0:7a82ad48df33 167 lcd.printString("Ibrahim Adam",5,1);
probrania7 0:7a82ad48df33 168 lcd.printString("200789110",10,2);
probrania7 0:7a82ad48df33 169 lcd.printString("Yr2 - 2015",8,3);
probrania7 0:7a82ad48df33 170 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 0:7a82ad48df33 171
probrania7 0:7a82ad48df33 172 wait(1.3);
probrania7 0:7a82ad48df33 173 lcd.clear();
probrania7 0:7a82ad48df33 174
probrania7 0:7a82ad48df33 175 //introductory text c
probrania7 0:7a82ad48df33 176 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 0:7a82ad48df33 177 lcd.printString("Elec 2645",15,1);
probrania7 0:7a82ad48df33 178 lcd.printString("Embedded SYS",8,2);
probrania7 0:7a82ad48df33 179 lcd.printString("Project",21,3);
probrania7 0:7a82ad48df33 180 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 0:7a82ad48df33 181
probrania7 0:7a82ad48df33 182 msgFlag = 1;
probrania7 0:7a82ad48df33 183
probrania7 0:7a82ad48df33 184 wait(1.3);
probrania7 0:7a82ad48df33 185 lcd.clear();
probrania7 0:7a82ad48df33 186 }
probrania7 0:7a82ad48df33 187
probrania7 0:7a82ad48df33 188 void mainMenu()
probrania7 0:7a82ad48df33 189 {
probrania7 0:7a82ad48df33 190
probrania7 0:7a82ad48df33 191 }
probrania7 0:7a82ad48df33 192
probrania7 0:7a82ad48df33 193 void endMessage()
probrania7 0:7a82ad48df33 194 {
probrania7 0:7a82ad48df33 195 //end text
probrania7 0:7a82ad48df33 196 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 0:7a82ad48df33 197 lcd.printString("Thank You",12,1);
probrania7 0:7a82ad48df33 198 lcd.printString("Goodbye",19,2);
probrania7 0:7a82ad48df33 199
probrania7 0:7a82ad48df33 200 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 0:7a82ad48df33 201
probrania7 0:7a82ad48df33 202 wait(1);
probrania7 0:7a82ad48df33 203 lcd.clear();
probrania7 0:7a82ad48df33 204 }
probrania7 0:7a82ad48df33 205
probrania7 0:7a82ad48df33 206 void errorHandler()
probrania7 0:7a82ad48df33 207 {
probrania7 0:7a82ad48df33 208 //end text
probrania7 0:7a82ad48df33 209 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 0:7a82ad48df33 210 lcd.printString("Error Help",12,1);
probrania7 0:7a82ad48df33 211
probrania7 0:7a82ad48df33 212
probrania7 0:7a82ad48df33 213 wait(0.2);
probrania7 0:7a82ad48df33 214 lcd.clear();
probrania7 0:7a82ad48df33 215 }
probrania7 0:7a82ad48df33 216
probrania7 0:7a82ad48df33 217 void adjustBrightness(float x)
probrania7 0:7a82ad48df33 218 {
probrania7 0:7a82ad48df33 219 if ((x >= 0) && (x < 0.2))
probrania7 0:7a82ad48df33 220 {
probrania7 0:7a82ad48df33 221 lcd.setBrightness(0);
probrania7 0:7a82ad48df33 222 lcd.printString("Light 0%",13,1);
probrania7 0:7a82ad48df33 223 }
probrania7 0:7a82ad48df33 224
probrania7 0:7a82ad48df33 225 if ((x >= 0.2) && (x < 0.4))
probrania7 0:7a82ad48df33 226 {
probrania7 0:7a82ad48df33 227 lcd.setBrightness(0.25);
probrania7 0:7a82ad48df33 228 lcd.printString("Light 25%",13,1);
probrania7 0:7a82ad48df33 229 }
probrania7 0:7a82ad48df33 230
probrania7 0:7a82ad48df33 231 if ((x >= 0.4) && (x < 0.6))
probrania7 0:7a82ad48df33 232 {
probrania7 0:7a82ad48df33 233 lcd.setBrightness(0.5);
probrania7 0:7a82ad48df33 234 lcd.printString("Light 50%",13,1);
probrania7 0:7a82ad48df33 235 }
probrania7 0:7a82ad48df33 236
probrania7 0:7a82ad48df33 237 if ((x >= 0.6) && (x < 0.8))
probrania7 0:7a82ad48df33 238 {
probrania7 0:7a82ad48df33 239 lcd.setBrightness(0.75);
probrania7 0:7a82ad48df33 240 lcd.printString("Light 75%",13,1);
probrania7 0:7a82ad48df33 241
probrania7 0:7a82ad48df33 242 }
probrania7 0:7a82ad48df33 243 if (x >= 0.8)
probrania7 0:7a82ad48df33 244 {
probrania7 0:7a82ad48df33 245 lcd.setBrightness(1);
probrania7 0:7a82ad48df33 246 lcd.printString("Light 100%",13,1);
probrania7 0:7a82ad48df33 247 }
probrania7 0:7a82ad48df33 248 lcd.clear();
probrania7 0:7a82ad48df33 249 }
probrania7 0:7a82ad48df33 250
probrania7 0:7a82ad48df33 251 void menu()
probrania7 0:7a82ad48df33 252 {
probrania7 0:7a82ad48df33 253 lcd.clear();
probrania7 0:7a82ad48df33 254 lcd.printString("-MAIN MENU-",9,0);
probrania7 0:7a82ad48df33 255 lcd.drawLine(4, 7, 79, 7, 1);
probrania7 0:7a82ad48df33 256 lcd.printString("Dist read",15,1);
probrania7 0:7a82ad48df33 257 lcd.printString("Save data",15,2);
probrania7 0:7a82ad48df33 258 lcd.printString("brightness",15,3);
probrania7 0:7a82ad48df33 259 lcd.printString("SYS test",15,4);
probrania7 0:7a82ad48df33 260 }
probrania7 0:7a82ad48df33 261
probrania7 0:7a82ad48df33 262 void cursorSelect(int xDimm, int xLimm, int yDimm, int yLimm)
probrania7 0:7a82ad48df33 263 {
probrania7 0:7a82ad48df33 264 int i,j;
probrania7 0:7a82ad48df33 265
probrania7 0:7a82ad48df33 266 //clear selecton column
probrania7 0:7a82ad48df33 267 for (i = 1; i < 6; i++)
probrania7 0:7a82ad48df33 268 {
probrania7 0:7a82ad48df33 269 for(j = 1; j < 46; j++)
probrania7 0:7a82ad48df33 270 {
probrania7 0:7a82ad48df33 271 lcd.clearPixel(i,j);
probrania7 0:7a82ad48df33 272 }
probrania7 0:7a82ad48df33 273 }
probrania7 0:7a82ad48df33 274
probrania7 0:7a82ad48df33 275 //particular selection
probrania7 0:7a82ad48df33 276 for (i = xDimm; i < xLimm; i++)
probrania7 0:7a82ad48df33 277 {
probrania7 0:7a82ad48df33 278 for(j = yDimm; j < yLimm; j++)
probrania7 0:7a82ad48df33 279 {
probrania7 0:7a82ad48df33 280 lcd.setPixel(i,j);
probrania7 0:7a82ad48df33 281 }
probrania7 0:7a82ad48df33 282 }
probrania7 0:7a82ad48df33 283 lcd.refresh();
probrania7 0:7a82ad48df33 284 }
probrania7 0:7a82ad48df33 285
probrania7 0:7a82ad48df33 286 void demo()
probrania7 0:7a82ad48df33 287 {
probrania7 0:7a82ad48df33 288 // these are default settings so not strictly needed
probrania7 0:7a82ad48df33 289 lcd.normalMode(); // normal colour mode
probrania7 0:7a82ad48df33 290 lcd.setBrightness(0.5); // put LED backlight on 50%
probrania7 0:7a82ad48df33 291
probrania7 0:7a82ad48df33 292 // can directly print strings at specified co-ordinates
probrania7 0:7a82ad48df33 293 lcd.printString("Hello, World!",0,0);
probrania7 0:7a82ad48df33 294
probrania7 0:7a82ad48df33 295 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
probrania7 0:7a82ad48df33 296 // so can display a string of a maximum 14 characters in length
probrania7 0:7a82ad48df33 297 // or create formatted strings - ensure they aren't more than 14 characters long
probrania7 0:7a82ad48df33 298 int temperature = 27;
probrania7 0:7a82ad48df33 299 int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer
probrania7 0:7a82ad48df33 300 // it is important the format specifier ensures the length will fit in the buffer
probrania7 0:7a82ad48df33 301 if (length <= 14) // if string will fit on display
probrania7 0:7a82ad48df33 302 lcd.printString(buffer,0,1); // display on screen
probrania7 0:7a82ad48df33 303
probrania7 0:7a82ad48df33 304 float pressure = 1012.3; // same idea with floats
probrania7 0:7a82ad48df33 305 length = sprintf(buffer,"P = %.2f mb",pressure);
probrania7 0:7a82ad48df33 306 if (length <= 14)
probrania7 0:7a82ad48df33 307 lcd.printString(buffer,0,2);
probrania7 0:7a82ad48df33 308
probrania7 0:7a82ad48df33 309 // can also print individual characters at specified place
probrania7 0:7a82ad48df33 310 lcd.printChar('X',5,3);
probrania7 0:7a82ad48df33 311
probrania7 0:7a82ad48df33 312 // draw a line across the display at y = 40 pixels (origin top-left)
probrania7 0:7a82ad48df33 313 for (int i = 0; i < WIDTH; i++)
probrania7 0:7a82ad48df33 314 {
probrania7 0:7a82ad48df33 315 lcd.setPixel(i,40);
probrania7 0:7a82ad48df33 316 }
probrania7 0:7a82ad48df33 317 // need to refresh display after setting pixels
probrania7 0:7a82ad48df33 318 lcd.refresh();
probrania7 0:7a82ad48df33 319
probrania7 0:7a82ad48df33 320 // can also check status of pixels using getPixel(x,y)
probrania7 0:7a82ad48df33 321
probrania7 0:7a82ad48df33 322 wait(5.0);
probrania7 0:7a82ad48df33 323 lcd.clear(); // clear display
probrania7 0:7a82ad48df33 324 lcd.inverseMode(); // invert colours
probrania7 0:7a82ad48df33 325 lcd.setBrightness(1.0); // put LED backlight on full
probrania7 0:7a82ad48df33 326
probrania7 0:7a82ad48df33 327 float array[84];
probrania7 0:7a82ad48df33 328
probrania7 0:7a82ad48df33 329 for (int i = 0; i < 84; i++)
probrania7 0:7a82ad48df33 330 {
probrania7 0:7a82ad48df33 331 array[i] = 0.5 + 0.5*sin(i*2*3.14/84);
probrania7 0:7a82ad48df33 332 }
probrania7 0:7a82ad48df33 333
probrania7 0:7a82ad48df33 334 // can also plot graphs - 84 elements only
probrania7 0:7a82ad48df33 335 // values must be in range 0.0 - 1.0
probrania7 0:7a82ad48df33 336 lcd.plotArray(array);
probrania7 0:7a82ad48df33 337 wait(5.0);
probrania7 0:7a82ad48df33 338 lcd.clear();
probrania7 0:7a82ad48df33 339 lcd.normalMode(); // normal colour mode back
probrania7 0:7a82ad48df33 340 lcd.setBrightness(0.5); // put LED backlight on 50%
probrania7 0:7a82ad48df33 341
probrania7 0:7a82ad48df33 342 // example of drawing lines
probrania7 0:7a82ad48df33 343 for (int x = 0; x < WIDTH ; x+=10)
probrania7 0:7a82ad48df33 344 {
probrania7 0:7a82ad48df33 345 // x0,y0,x1,y1,type 0-white,1-black,2-dotted
probrania7 0:7a82ad48df33 346 lcd.drawLine(0,0,x,HEIGHT,2);
probrania7 0:7a82ad48df33 347 }
probrania7 0:7a82ad48df33 348
probrania7 0:7a82ad48df33 349 wait(5.0);
probrania7 0:7a82ad48df33 350 lcd.clear();
probrania7 0:7a82ad48df33 351
probrania7 0:7a82ad48df33 352 // example of how to draw circles
probrania7 0:7a82ad48df33 353 lcd.drawCircle(WIDTH/2,HEIGHT/2,20,1); // x,y,radius,black fill
probrania7 0:7a82ad48df33 354 lcd.drawCircle(WIDTH/2,HEIGHT/2,10,2); // x,y,radius,white fill
probrania7 0:7a82ad48df33 355 lcd.drawCircle(WIDTH/2,HEIGHT/2,30,0); // x,y,radius,transparent with outline
probrania7 0:7a82ad48df33 356
probrania7 0:7a82ad48df33 357 wait(5.0);
probrania7 0:7a82ad48df33 358 lcd.clear();
probrania7 0:7a82ad48df33 359
probrania7 0:7a82ad48df33 360 // example of how to draw rectangles
probrania7 0:7a82ad48df33 361 // origin x,y,width,height,type
probrania7 0:7a82ad48df33 362 lcd.drawRect(10,10,50,30,1); // filled black rectangle
probrania7 0:7a82ad48df33 363 lcd.drawRect(15,15,20,10,2); // filled white rectange (no outline)
probrania7 0:7a82ad48df33 364 lcd.drawRect(2,2,70,40,0); // transparent, just outline
probrania7 0:7a82ad48df33 365
probrania7 0:7a82ad48df33 366 wait(5.0);
probrania7 0:7a82ad48df33 367 lcd.clear();
probrania7 0:7a82ad48df33 368 }
probrania7 0:7a82ad48df33 369
probrania7 0:7a82ad48df33 370 //Interrupt service routines
probrania7 0:7a82ad48df33 371 //===========================
probrania7 0:7a82ad48df33 372 void button1Pressed()
probrania7 0:7a82ad48df33 373 {
probrania7 0:7a82ad48df33 374 button1Flag = 1;
probrania7 0:7a82ad48df33 375 }
probrania7 0:7a82ad48df33 376 void button2Pressed()
probrania7 0:7a82ad48df33 377 {
probrania7 0:7a82ad48df33 378 button2Flag = 1;
probrania7 0:7a82ad48df33 379 }
probrania7 0:7a82ad48df33 380 void button3Pressed()
probrania7 0:7a82ad48df33 381 {
probrania7 0:7a82ad48df33 382 button3Flag = 1;
probrania7 0:7a82ad48df33 383 }
probrania7 0:7a82ad48df33 384
probrania7 0:7a82ad48df33 385 //beep sound based on beeper frequency and beeper time
probrania7 0:7a82ad48df33 386 //entered respectively
probrania7 0:7a82ad48df33 387 void beeper(float beeperFreq, float beeperTime)
probrania7 0:7a82ad48df33 388 {
probrania7 0:7a82ad48df33 389 beep1.beep(beeperFreq,beeperTime);
probrania7 0:7a82ad48df33 390 }
probrania7 0:7a82ad48df33 391
probrania7 0:7a82ad48df33 392 void menuLevel(float lvl)
probrania7 0:7a82ad48df33 393 {
probrania7 0:7a82ad48df33 394 if ((lvl >= 0) && (lvl < 0.25))
probrania7 0:7a82ad48df33 395 {
probrania7 0:7a82ad48df33 396 cursorSelect(1, 6, 9, 14);
probrania7 0:7a82ad48df33 397 if (button2)
probrania7 0:7a82ad48df33 398 {
probrania7 0:7a82ad48df33 399 distFlag = 1;
probrania7 0:7a82ad48df33 400 brightFlag = 0;
probrania7 0:7a82ad48df33 401 clockFlag = 0;
probrania7 0:7a82ad48df33 402 }
probrania7 0:7a82ad48df33 403
probrania7 0:7a82ad48df33 404 }
probrania7 0:7a82ad48df33 405 if ((lvl >= 0.25) && (lvl < 0.5))
probrania7 0:7a82ad48df33 406 {
probrania7 0:7a82ad48df33 407 cursorSelect(1, 6, 17, 22);
probrania7 0:7a82ad48df33 408 }
probrania7 0:7a82ad48df33 409 if ((lvl >= 0.5) && (lvl < 0.75))
probrania7 0:7a82ad48df33 410 {
probrania7 0:7a82ad48df33 411 cursorSelect(1, 6, 25, 30);
probrania7 0:7a82ad48df33 412 if (button2)
probrania7 0:7a82ad48df33 413 {
probrania7 0:7a82ad48df33 414 brightFlag = 1;
probrania7 0:7a82ad48df33 415 distFlag =0;
probrania7 0:7a82ad48df33 416 clockFlag = 0;
probrania7 0:7a82ad48df33 417 }
probrania7 0:7a82ad48df33 418
probrania7 0:7a82ad48df33 419 }
probrania7 0:7a82ad48df33 420 if ((lvl >= 0.75) && (lvl <= 1))
probrania7 0:7a82ad48df33 421 {
probrania7 0:7a82ad48df33 422 cursorSelect(1, 6, 33, 38);
probrania7 0:7a82ad48df33 423 if (button2)
probrania7 0:7a82ad48df33 424 {
probrania7 0:7a82ad48df33 425 clockFlag = 1;
probrania7 0:7a82ad48df33 426 distFlag = 0;
probrania7 0:7a82ad48df33 427 brightFlag = 0;
probrania7 0:7a82ad48df33 428 }
probrania7 0:7a82ad48df33 429 }
probrania7 0:7a82ad48df33 430
probrania7 0:7a82ad48df33 431 }
probrania7 0:7a82ad48df33 432 void clockA()
probrania7 0:7a82ad48df33 433 {
probrania7 0:7a82ad48df33 434 lcd.printString("Set clock",35,0);
probrania7 0:7a82ad48df33 435 }
probrania7 0:7a82ad48df33 436 void distMeasure()
probrania7 0:7a82ad48df33 437 {
probrania7 0:7a82ad48df33 438 lcd.clear();
probrania7 0:7a82ad48df33 439 lcd.printString("Measure",15,0);
probrania7 0:7a82ad48df33 440
probrania7 0:7a82ad48df33 441 // read sensor distance in cm and print over serial port
probrania7 0:7a82ad48df33 442 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
probrania7 0:7a82ad48df33 443 // so can display a string of a maximum 14 characters in length
probrania7 0:7a82ad48df33 444 // or create formatted strings - ensure they aren't more than 14 characters long
probrania7 0:7a82ad48df33 445 int distance = sensor.getDistanceCm();
probrania7 0:7a82ad48df33 446 int length = sprintf(buffer,"Dist = %2d cm",distance); // print formatted data to buffer
probrania7 0:7a82ad48df33 447 // it is important the format specifier ensures the length will fit in the buffer
probrania7 0:7a82ad48df33 448 if (length <= 14) // if string will fit on display
probrania7 0:7a82ad48df33 449 {
probrania7 0:7a82ad48df33 450 lcd.printString(buffer,0,1); // display on screen
probrania7 0:7a82ad48df33 451 }
probrania7 0:7a82ad48df33 452
probrania7 0:7a82ad48df33 453 // serial.printf("Distance = %d cm\n",distance);
probrania7 0:7a82ad48df33 454 serial.printf("\n\n\r %s, %0.2f C\n",buffer, length);
probrania7 0:7a82ad48df33 455
probrania7 0:7a82ad48df33 456 }
probrania7 0:7a82ad48df33 457
probrania7 0:7a82ad48df33 458 void saveData()
probrania7 0:7a82ad48df33 459 {
probrania7 0:7a82ad48df33 460 lcd.printString("Save data",36,0);
probrania7 0:7a82ad48df33 461 }
probrania7 0:7a82ad48df33 462 void systemTest()
probrania7 0:7a82ad48df33 463 {
probrania7 0:7a82ad48df33 464 lcd.printString("System test",30,0);
probrania7 0:7a82ad48df33 465 }
probrania7 0:7a82ad48df33 466 void startMessage()
probrania7 0:7a82ad48df33 467 {
probrania7 0:7a82ad48df33 468 lcd.printString("Press",25,2);
probrania7 0:7a82ad48df33 469 lcd.printString("Start Button",8,3);
probrania7 0:7a82ad48df33 470 //displayClock();
probrania7 0:7a82ad48df33 471
probrania7 0:7a82ad48df33 472 }
probrania7 0:7a82ad48df33 473 void displayClock()
probrania7 0:7a82ad48df33 474 {
probrania7 0:7a82ad48df33 475 timer2.attach(&timer2Expired,1.0);
probrania7 0:7a82ad48df33 476 serial.attach(&serialISR); // attach serial ISR
probrania7 0:7a82ad48df33 477 lcd.clear();
probrania7 0:7a82ad48df33 478
probrania7 0:7a82ad48df33 479 lcd.printString("-SYS CLOCK-",9,0);
probrania7 0:7a82ad48df33 480
probrania7 0:7a82ad48df33 481 if (timer2Flag)
probrania7 0:7a82ad48df33 482 {
probrania7 0:7a82ad48df33 483 getCurrentTime();
probrania7 0:7a82ad48df33 484 }
probrania7 0:7a82ad48df33 485
probrania7 0:7a82ad48df33 486 if (setTimeFlag)
probrania7 0:7a82ad48df33 487 {
probrania7 0:7a82ad48df33 488 chkUpdateTime();
probrania7 0:7a82ad48df33 489 }
probrania7 0:7a82ad48df33 490
probrania7 0:7a82ad48df33 491 lcd.printString(buffer2,4,2); // display on screen
probrania7 0:7a82ad48df33 492 }