Program to display temperature and pressure readings along with date and time.

Dependencies:   BMP180 N5110 PowerControl mbed

Committer:
el13akr
Date:
Mon May 11 08:12:30 2015 +0000
Revision:
13:f61f8c45b361
Parent:
12:75df8bf76081
FINAL

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el13akr 11:b97dd4410d72 1 /**
el13akr 11:b97dd4410d72 2 @file main.cpp
el13akr 11:b97dd4410d72 3 @brief Main code for Weather Logger
el13akr 11:b97dd4410d72 4 @author Alex Raper
el13akr 11:b97dd4410d72 5 @date May 2015
el13akr 11:b97dd4410d72 6 */
el13akr 11:b97dd4410d72 7
el13akr 0:c2a88630fb72 8 #include "mbed.h"
el13akr 0:c2a88630fb72 9 #include "N5110.h"
el13akr 0:c2a88630fb72 10 #include "BMP180.h"
el13akr 11:b97dd4410d72 11 #include "PowerControl/PowerControl.h"
el13akr 11:b97dd4410d72 12 #include "PowerControl/EthernetPowerControl.h"
el13akr 0:c2a88630fb72 13
el13akr 11:b97dd4410d72 14 #define USR_POWERDOWN (0x104)
el13akr 11:b97dd4410d72 15
el13akr 11:b97dd4410d72 16 //! VCC,SCE,RST,D/C,MOSI,SCLK,LED
el13akr 13:f61f8c45b361 17 /** Can also power (VCC) directly from VOUT (3.3 V) -
el13akr 13:f61f8c45b361 18 Can give better performance due to current limitation from GPIO pin
el13akr 13:f61f8c45b361 19 */
el13akr 13:f61f8c45b361 20
el13akr 11:b97dd4410d72 21 N5110 lcd(p7,p8,p9,p10,p11,p13,p26); //!<pins for nokia screen
el13akr 13:f61f8c45b361 22
el13akr 11:b97dd4410d72 23
el13akr 11:b97dd4410d72 24 /**
el13akr 11:b97dd4410d72 25 @namespace timer
el13akr 11:b97dd4410d72 26 @brief create a ticker object to read the data from the sensor
el13akr 11:b97dd4410d72 27 */
el13akr 11:b97dd4410d72 28 Ticker timer;
el13akr 11:b97dd4410d72 29
el13akr 11:b97dd4410d72 30 /**
el13akr 11:b97dd4410d72 31 @namespace timeOut
el13akr 11:b97dd4410d72 32 @brief only loops once to show menu
el13akr 11:b97dd4410d72 33 */
el13akr 11:b97dd4410d72 34 Timeout timeOut;
el13akr 11:b97dd4410d72 35
el13akr 11:b97dd4410d72 36 /**
el13akr 11:b97dd4410d72 37 @namespace leds
el13akr 11:b97dd4410d72 38 @brief leds used for error function
el13akr 11:b97dd4410d72 39 */
el13akr 11:b97dd4410d72 40 BusOut leds(LED4,LED3,LED2,LED1);
el13akr 11:b97dd4410d72 41
el13akr 11:b97dd4410d72 42 /**
el13akr 11:b97dd4410d72 43 @namespace bmp180
el13akr 11:b97dd4410d72 44 @brief barometric pressure sensor
el13akr 11:b97dd4410d72 45 */
el13akr 11:b97dd4410d72 46 BMP180 bmp180(p28,p27);
el13akr 0:c2a88630fb72 47
el13akr 11:b97dd4410d72 48 /**
el13akr 11:b97dd4410d72 49 @namespace serial
el13akr 11:b97dd4410d72 50 @brief communication over the serial port
el13akr 11:b97dd4410d72 51 */
el13akr 0:c2a88630fb72 52 Serial serial(USBTX,USBRX);
el13akr 11:b97dd4410d72 53
el13akr 11:b97dd4410d72 54 /**
el13akr 11:b97dd4410d72 55 @namespace POT
el13akr 11:b97dd4410d72 56 @brief petentiometer used for menu
el13akr 11:b97dd4410d72 57 */
el13akr 0:c2a88630fb72 58 AnalogIn POT(p20);
el13akr 11:b97dd4410d72 59
el13akr 11:b97dd4410d72 60
el13akr 11:b97dd4410d72 61 /**
el13akr 11:b97dd4410d72 62 @namespace graphButton
el13akr 11:b97dd4410d72 63 @brief button to select graph
el13akr 11:b97dd4410d72 64 */
el13akr 11:b97dd4410d72 65 InterruptIn graphButton(p16);
el13akr 11:b97dd4410d72 66
el13akr 11:b97dd4410d72 67 /**
el13akr 11:b97dd4410d72 68 @namespace currentButton
el13akr 11:b97dd4410d72 69 @brief button to select current
el13akr 11:b97dd4410d72 70 */
el13akr 11:b97dd4410d72 71 InterruptIn currentButton(p15);
el13akr 0:c2a88630fb72 72
el13akr 11:b97dd4410d72 73 /**
el13akr 11:b97dd4410d72 74 @namespace red
el13akr 11:b97dd4410d72 75 @brief led for displaying error
el13akr 11:b97dd4410d72 76 */
el13akr 11:b97dd4410d72 77 PwmOut red(p24);
el13akr 11:b97dd4410d72 78
el13akr 11:b97dd4410d72 79 /**
el13akr 11:b97dd4410d72 80 @namespace buzzer
el13akr 11:b97dd4410d72 81 @brief buzzer for displaying error
el13akr 11:b97dd4410d72 82 */
el13akr 11:b97dd4410d72 83 PwmOut buzzer(p21);
el13akr 11:b97dd4410d72 84
el13akr 11:b97dd4410d72 85 /**
el13akr 11:b97dd4410d72 86 @param timerFlag - flag for timer
el13akr 11:b97dd4410d72 87 @param timeOutFlag - flag for timeOut
el13akr 11:b97dd4410d72 88 @param graphFlag - flag for graph button
el13akr 11:b97dd4410d72 89 @param currentFlag - flag for current button
el13akr 11:b97dd4410d72 90 @param semihost_powerdown - used to powerdown USB interface
el13akr 11:b97dd4410d72 91 */
el13akr 13:f61f8c45b361 92
el13akr 13:f61f8c45b361 93
el13akr 0:c2a88630fb72 94 int timerFlag= 0;
el13akr 13:f61f8c45b361 95 int timeOutFlag = 0;
el13akr 13:f61f8c45b361 96 int graphFlag = 0;
el13akr 2:63ef0a1afcbe 97 int currentFlag = 0;
el13akr 11:b97dd4410d72 98 int semihost_powerdown();
el13akr 13:f61f8c45b361 99 int main(); //!<main code
el13akr 13:f61f8c45b361 100 char rxString[16]; //!<buffer to store received string
el13akr 11:b97dd4410d72 101 char bufferTime[14];//!<array to store time
el13akr 11:b97dd4410d72 102 char bufferDate[14];//!<array to store date
el13akr 11:b97dd4410d72 103 float temperature; //!<stores temperature value as a float (has to be a float or graph doesn't work)
el13akr 11:b97dd4410d72 104 float pressure;//!<stores pressure value as a float
el13akr 11:b97dd4410d72 105 void displayTemperature();//!<function to display current temperature value
el13akr 11:b97dd4410d72 106 void displayPressure();//!<function to display current pressure value
el13akr 11:b97dd4410d72 107 void receiveData();//!<function to get the data from the BMP180
el13akr 11:b97dd4410d72 108 void displayTemperatureGraph();//!<function to display the graph of temperature
el13akr 11:b97dd4410d72 109 void displayPressureGraph();//!<function to display the graph of pressure
el13akr 11:b97dd4410d72 110 void error();//!<function to display visual error when values go above threshold
el13akr 11:b97dd4410d72 111 void time();//!<function to display time and date
el13akr 11:b97dd4410d72 112 void setTime(); //!<function to set the UNIX time
el13akr 11:b97dd4410d72 113 void interrupt(); //!<for RTC
el13akr 13:f61f8c45b361 114 void menu(); //!<function to display main menu screen
el13akr 0:c2a88630fb72 115
el13akr 11:b97dd4410d72 116 int semihost_powerdown()//!<function to power-down USB interface
el13akr 11:b97dd4410d72 117 {
el13akr 11:b97dd4410d72 118 uint32_t arg;
el13akr 11:b97dd4410d72 119 return __semihost(USR_POWERDOWN, &arg);
el13akr 11:b97dd4410d72 120 }
el13akr 11:b97dd4410d72 121
el13akr 11:b97dd4410d72 122 void screen() //!<welcome screen
el13akr 0:c2a88630fb72 123 {
el13akr 0:c2a88630fb72 124 lcd.printString("Weather Logger",0,2);
el13akr 0:c2a88630fb72 125 lcd.printString("3000",32,3);
el13akr 0:c2a88630fb72 126 lcd.printString("Alex Raper",15,5);
el13akr 3:075786ca7621 127 lcd.refresh(); //clear screen
el13akr 0:c2a88630fb72 128 }
el13akr 0:c2a88630fb72 129
el13akr 11:b97dd4410d72 130 void menu() //!<main menu screen
el13akr 0:c2a88630fb72 131 {
el13akr 12:75df8bf76081 132
el13akr 1:026d80a2f7a9 133 lcd.clear();
el13akr 11:b97dd4410d72 134 if (POT>=(3.0/4.0)) { //!<if the potentiometer is pointing to the left (temperature)
el13akr 11:b97dd4410d72 135 lcd.printString("Temperature",2,2); //!<data type label
el13akr 11:b97dd4410d72 136 lcd.printString(">",76,2); //!<arrow denoting a different screen can be shown by pointing potentiometer in right direction
el13akr 11:b97dd4410d72 137 lcd.printString("Graph",0,5);//!<graph button label
el13akr 11:b97dd4410d72 138 lcd.printString("Current",42,5);//!<current button label
el13akr 11:b97dd4410d72 139 if (graphFlag) { //!<if the graph button is pressed
el13akr 11:b97dd4410d72 140 graphFlag = 0; //!<reset graph flag to 0
el13akr 11:b97dd4410d72 141 displayTemperatureGraph(); //!<display temperature graph from function
el13akr 6:49a3fb0956ef 142
el13akr 0:c2a88630fb72 143
el13akr 2:63ef0a1afcbe 144 }
el13akr 11:b97dd4410d72 145 if (currentFlag ==1 ) { //!<if the current button is pressed
el13akr 11:b97dd4410d72 146 currentFlag = 0; //!<reset current flag to 0
el13akr 6:49a3fb0956ef 147
el13akr 11:b97dd4410d72 148 displayTemperature(); //!<display current temperature value
el13akr 2:63ef0a1afcbe 149 }
el13akr 8:9461cda3310b 150 } else if ((3.0/4.0)>POT && POT>=(1.0/2.0)) {
el13akr 11:b97dd4410d72 151 lcd.printString("Pressure",18,2);//!<data type label
el13akr 11:b97dd4410d72 152 lcd.printString("<",2,2);//!<arrow denoting a different screen can be shown by pointing potentiometer in left direction
el13akr 11:b97dd4410d72 153 lcd.printString(">",76,2); //!<arrow denoting a different screen can be shown by pointing potentiometer in right direction
el13akr 11:b97dd4410d72 154 lcd.printString("Graph",0,5);//!<graph button label
el13akr 11:b97dd4410d72 155 lcd.printString("Current",42,5);//!<current button label
el13akr 11:b97dd4410d72 156 if (graphFlag) { //!<if the graph button is pressed
el13akr 11:b97dd4410d72 157 graphFlag = 0; //!<reset graph flag to 0
el13akr 11:b97dd4410d72 158 displayPressureGraph();//!<display pressure graph from function
el13akr 8:9461cda3310b 159
el13akr 0:c2a88630fb72 160
el13akr 2:63ef0a1afcbe 161 }
el13akr 8:9461cda3310b 162
el13akr 11:b97dd4410d72 163 if (currentFlag) { //!<if the current button is pressed
el13akr 11:b97dd4410d72 164 currentFlag = 0; //!<reset current flag to 0
el13akr 11:b97dd4410d72 165 displayPressure();//!<display current pressure value
el13akr 2:63ef0a1afcbe 166 }
el13akr 8:9461cda3310b 167 } else if ((1.0/2.0)>POT && POT>=(1.0/4.0)) {
el13akr 8:9461cda3310b 168 time();
el13akr 11:b97dd4410d72 169 lcd.printString("Date",30,0);//!<date label
el13akr 11:b97dd4410d72 170 lcd.printString(">",76,2); //!<arrow denoting a different screen can be shown by pointing potentiometer in right direction
el13akr 11:b97dd4410d72 171 lcd.printString("<",2,2);//!<arrow denoting a different screen can be shown by pointing potentiometer in left direction
el13akr 11:b97dd4410d72 172 lcd.printString(bufferDate,19,2);//!<display date
el13akr 8:9461cda3310b 173 } else {
el13akr 8:9461cda3310b 174 time();
el13akr 11:b97dd4410d72 175 lcd.printString("Time",30,0);//!<time stamp
el13akr 11:b97dd4410d72 176 lcd.printString("<",2,2);//!<arrow denoting a different screen can be shown by pointing potentiometer in left direction
el13akr 11:b97dd4410d72 177 lcd.printString(bufferTime,19,2);//!<display time
el13akr 0:c2a88630fb72 178 }
el13akr 0:c2a88630fb72 179 }
el13akr 0:c2a88630fb72 180
el13akr 6:49a3fb0956ef 181
el13akr 8:9461cda3310b 182
el13akr 8:9461cda3310b 183
el13akr 11:b97dd4410d72 184 void time(){ //!<function to get time
el13akr 8:9461cda3310b 185
el13akr 11:b97dd4410d72 186 time_t seconds = time(NULL); //!<get current time
el13akr 11:b97dd4410d72 187 strftime(bufferTime, 14 , "%X", localtime(&seconds));//!<format time into a string
el13akr 11:b97dd4410d72 188 strftime(bufferDate, 14 , "%D", localtime(&seconds));//!<format date into a string
el13akr 8:9461cda3310b 189 }
el13akr 8:9461cda3310b 190
el13akr 13:f61f8c45b361 191 void timerExpired() //!<Interrupt service routine
el13akr 2:63ef0a1afcbe 192 {
el13akr 13:f61f8c45b361 193 timerFlag = 1 ; //!<set timer flag
el13akr 0:c2a88630fb72 194 }
el13akr 0:c2a88630fb72 195
el13akr 13:f61f8c45b361 196 void timeOutStopped() //!<Interrupt service routine
el13akr 2:63ef0a1afcbe 197 {
el13akr 2:63ef0a1afcbe 198
el13akr 13:f61f8c45b361 199 timeOutFlag = 1; //!<set time out flag
el13akr 2:63ef0a1afcbe 200 }
el13akr 0:c2a88630fb72 201
el13akr 13:f61f8c45b361 202 void graphButtonPressed () //!<Interrupt service routine
el13akr 2:63ef0a1afcbe 203 {
el13akr 13:f61f8c45b361 204 graphFlag = 1; //!<set graph flag
el13akr 11:b97dd4410d72 205 //serial.printf("graph button pressed "); //!<used for debugging
el13akr 2:63ef0a1afcbe 206 }
el13akr 2:63ef0a1afcbe 207
el13akr 13:f61f8c45b361 208 void currentButtonPressed () //!<Interrupt service routine
el13akr 2:63ef0a1afcbe 209 {
el13akr 13:f61f8c45b361 210 currentFlag = 1; //!<set current flag
el13akr 11:b97dd4410d72 211 //serial.printf("current button pressed "); //!<used for debugging
el13akr 2:63ef0a1afcbe 212 }
el13akr 11:b97dd4410d72 213 void receiveData() //!<function to receive data from BMP
el13akr 0:c2a88630fb72 214 {
el13akr 0:c2a88630fb72 215
el13akr 11:b97dd4410d72 216 Measurement measurement; //!<measurement structure declared in BMP180 class
el13akr 0:c2a88630fb72 217
el13akr 11:b97dd4410d72 218 //! read values (T in Celsius and P in mb) and print over serial port
el13akr 0:c2a88630fb72 219 measurement = bmp180.readValues();
el13akr 11:b97dd4410d72 220 //serial.printf("T = %.2f C P = %.2f mb\n",measurement.temperature,measurement.pressure); //!<used for debugging
el13akr 0:c2a88630fb72 221
el13akr 11:b97dd4410d72 222 temperature = measurement.temperature ; //!<formatted temperature
el13akr 11:b97dd4410d72 223 pressure = measurement.pressure ; //!<formatted pressure
el13akr 0:c2a88630fb72 224
el13akr 7:32a4756cba1d 225 error();
el13akr 7:32a4756cba1d 226
el13akr 0:c2a88630fb72 227 }
el13akr 0:c2a88630fb72 228
el13akr 0:c2a88630fb72 229
el13akr 11:b97dd4410d72 230 void displayTemperature() //!<function to display formatted temperature
el13akr 0:c2a88630fb72 231 {
el13akr 6:49a3fb0956ef 232 while(1) {
el13akr 11:b97dd4410d72 233 if (timerFlag ==1) { //!<if the timer flag is set (Timer every 1.0 second)
el13akr 11:b97dd4410d72 234 timerFlag = 0; //!<reset flag to 0
el13akr 11:b97dd4410d72 235 lcd.clear(); //!<clear screen
el13akr 11:b97dd4410d72 236 receiveData(); //!<get data from function
el13akr 11:b97dd4410d72 237 char buffer[14]; //!<each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
el13akr 11:b97dd4410d72 238 //! so can display a string of a maximum 14 characters in length
el13akr 11:b97dd4410d72 239 //!or create formatted strings - ensure they aren't more than 14 characters long
el13akr 11:b97dd4410d72 240 int length = sprintf(buffer,"T = %.2f C",temperature); //!<print formatted data to buffer
el13akr 6:49a3fb0956ef 241 // it is important the format specifier ensures the length will fit in the buffer
el13akr 11:b97dd4410d72 242 //serial.printf( " L %i",length); //!<used for debugging
el13akr 11:b97dd4410d72 243 if (length <= 14) //!<if string will fit on display
el13akr 11:b97dd4410d72 244 lcd.printString(buffer,0,2); //!<display on screen
el13akr 7:32a4756cba1d 245
el13akr 11:b97dd4410d72 246 lcd.printString("Menu",60,5);//!<menu button label
el13akr 11:b97dd4410d72 247 wait(0.1); //!<time inbetween each plot
el13akr 6:49a3fb0956ef 248 if (currentFlag == 1 ) {
el13akr 6:49a3fb0956ef 249 currentFlag = 0;
el13akr 6:49a3fb0956ef 250 break ;
el13akr 6:49a3fb0956ef 251 }
el13akr 6:49a3fb0956ef 252 }
el13akr 6:49a3fb0956ef 253 }
el13akr 0:c2a88630fb72 254 }
el13akr 0:c2a88630fb72 255
el13akr 11:b97dd4410d72 256 void displayPressure() //!<function to display formatted pressure
el13akr 2:63ef0a1afcbe 257 {
el13akr 6:49a3fb0956ef 258 while(1) {
el13akr 11:b97dd4410d72 259 if (timerFlag ==1) { //!<if the timer flag is set (Timer every 1.0 second)
el13akr 11:b97dd4410d72 260 timerFlag = 0; //!<reset flag to 0
el13akr 11:b97dd4410d72 261 lcd.clear(); //!<clear screen
el13akr 11:b97dd4410d72 262 receiveData(); //!<get data from function
el13akr 11:b97dd4410d72 263 char buffer1[14]; //!<same as temperature
el13akr 11:b97dd4410d72 264 int length1 = sprintf(buffer1,"P = %.2fmb",pressure); //!<print formatted data to buffer1
el13akr 11:b97dd4410d72 265 //serial.printf( " L1 %i",length1); //!<used for debugging
el13akr 11:b97dd4410d72 266 if (length1 <= 14) //!<if string will fit on display
el13akr 11:b97dd4410d72 267 lcd.printString(buffer1,0,2); //!<display on screen
el13akr 7:32a4756cba1d 268
el13akr 11:b97dd4410d72 269 lcd.printString("Menu",60,5);//!<menu button label
el13akr 11:b97dd4410d72 270 wait(0.1); //!<time inbetween each plot
el13akr 7:32a4756cba1d 271
el13akr 6:49a3fb0956ef 272 if (currentFlag == 1 ) {
el13akr 6:49a3fb0956ef 273 currentFlag = 0;
el13akr 6:49a3fb0956ef 274 break ;
el13akr 6:49a3fb0956ef 275 }
el13akr 6:49a3fb0956ef 276 }
el13akr 6:49a3fb0956ef 277 }
el13akr 2:63ef0a1afcbe 278 }
el13akr 0:c2a88630fb72 279
el13akr 11:b97dd4410d72 280 void displayTemperatureGraph() //!<function to display temperature graph
el13akr 4:f4154181d941 281 {
el13akr 4:f4154181d941 282
el13akr 11:b97dd4410d72 283 float temperatureArray[84]; //!<maximum capacity of array is 84
el13akr 11:b97dd4410d72 284 int j=0; //!<initialise j to 0
el13akr 4:f4154181d941 285 while(1) {
el13akr 11:b97dd4410d72 286 lcd.clear(); //!<clear screen
el13akr 11:b97dd4410d72 287 lcd.printString("Menu",0,5);//!<menu button label
el13akr 7:32a4756cba1d 288
el13akr 11:b97dd4410d72 289 receiveData(); //!<get data from function
el13akr 11:b97dd4410d72 290 temperatureArray[j] = (temperature/47); //!<stores current temperature value in array
el13akr 11:b97dd4410d72 291 j++; //!<adds 1 to value of j to store next temperature value
el13akr 11:b97dd4410d72 292 lcd.plotArray(temperatureArray); //!<plots the array as a line
el13akr 11:b97dd4410d72 293 if (j>83) { //!<if the array is full
el13akr 11:b97dd4410d72 294 memset (temperatureArray,0, sizeof(temperatureArray)); //!<reset to 0 so line graph starts again
el13akr 4:f4154181d941 295 j = 0;
el13akr 4:f4154181d941 296 }
el13akr 11:b97dd4410d72 297 wait(0.1); //!<time inbetween each plot
el13akr 7:32a4756cba1d 298
el13akr 6:49a3fb0956ef 299 if (graphFlag == 1 ) {
el13akr 6:49a3fb0956ef 300 graphFlag = 0;
el13akr 6:49a3fb0956ef 301 break ;
el13akr 6:49a3fb0956ef 302 }
el13akr 4:f4154181d941 303 }
el13akr 3:075786ca7621 304 }
el13akr 3:075786ca7621 305
el13akr 11:b97dd4410d72 306 void displayPressureGraph() //!<function to display pressure graph
el13akr 4:f4154181d941 307 {
el13akr 4:f4154181d941 308
el13akr 11:b97dd4410d72 309 float pressureArray[84]; //!<maximum capacity of array is 84
el13akr 11:b97dd4410d72 310 int j=0; //!<initialise j to 0
el13akr 4:f4154181d941 311 while(1) {
el13akr 11:b97dd4410d72 312 lcd.clear(); //!<clear screen
el13akr 11:b97dd4410d72 313 lcd.printString("Menu",0,5);//!<menu button label
el13akr 7:32a4756cba1d 314
el13akr 11:b97dd4410d72 315 receiveData(); //!<get data from function
el13akr 11:b97dd4410d72 316 pressureArray[j] = (pressure/1100); //!<stores current pressure value in array
el13akr 11:b97dd4410d72 317 j++; //!<adds 1 to value of j to store next pressure value
el13akr 11:b97dd4410d72 318 lcd.plotArray(pressureArray); //!<plots the array as a line
el13akr 11:b97dd4410d72 319 if (j>83) { //!<if the array is full
el13akr 11:b97dd4410d72 320 memset (pressureArray,0, sizeof(pressureArray));//!<reset to 0 so line graph starts again
el13akr 4:f4154181d941 321 j = 0;
el13akr 4:f4154181d941 322 }
el13akr 11:b97dd4410d72 323 wait(0.1); //!<time inbetween each plot
el13akr 7:32a4756cba1d 324
el13akr 6:49a3fb0956ef 325 if (graphFlag == 1 ) {
el13akr 6:49a3fb0956ef 326 graphFlag = 0;
el13akr 6:49a3fb0956ef 327 break ;
el13akr 6:49a3fb0956ef 328 }
el13akr 4:f4154181d941 329 }
el13akr 3:075786ca7621 330 }
el13akr 0:c2a88630fb72 331
el13akr 11:b97dd4410d72 332 void error() //!<error function
el13akr 7:32a4756cba1d 333 {
el13akr 7:32a4756cba1d 334
el13akr 11:b97dd4410d72 335 if (temperature > 29 || pressure > 1000) { //!<if temperature or pressure goes above threshold values
el13akr 11:b97dd4410d72 336 red = 1; //!<red LED turns on
el13akr 11:b97dd4410d72 337
el13akr 11:b97dd4410d72 338 //!can't use buzzer because PWM signal is affecting LCD screen
el13akr 7:32a4756cba1d 339 //buzzer.period(1/590);
el13akr 10:0783c29dc776 340 //buzzer=0.5; // set duty cycle
el13akr 11:b97dd4410d72 341
el13akr 7:32a4756cba1d 342
el13akr 7:32a4756cba1d 343 } else {
el13akr 11:b97dd4410d72 344 red=0; //!<red LED stays off
el13akr 7:32a4756cba1d 345 }
el13akr 7:32a4756cba1d 346 }
el13akr 0:c2a88630fb72 347
el13akr 11:b97dd4410d72 348 int main() //!<main code
el13akr 0:c2a88630fb72 349 {
el13akr 11:b97dd4410d72 350 PHY_PowerDown(); //!<ethernet power-down
el13akr 11:b97dd4410d72 351 int result = semihost_powerdown(); //!<interface power-down
el13akr 11:b97dd4410d72 352 lcd.init();//!<initialise display
el13akr 11:b97dd4410d72 353 bmp180.init();//!<initiliase barometer
el13akr 11:b97dd4410d72 354 timer.attach (&timerExpired , 1.0); //!<instead of using wait(1.0)
el13akr 13:f61f8c45b361 355 timeOut.attach (&timeOutStopped , 2.0); //!<instead of using wait(2.0)
el13akr 2:63ef0a1afcbe 356 graphButton.rise (&graphButtonPressed);
el13akr 2:63ef0a1afcbe 357 currentButton.rise (&currentButtonPressed);
el13akr 7:32a4756cba1d 358 red.period_us(25);
el13akr 11:b97dd4410d72 359 //set_time(1430415950); //!<initialise time to now
el13akr 11:b97dd4410d72 360 screen(); //!<show the welcome screen
el13akr 1:026d80a2f7a9 361
el13akr 0:c2a88630fb72 362 while(1) {
el13akr 11:b97dd4410d72 363 time();//!<get time and date
el13akr 2:63ef0a1afcbe 364 if (timeOutFlag ==1 ) {
el13akr 11:b97dd4410d72 365 menu(); //!<display menu screen(s)
el13akr 2:63ef0a1afcbe 366 }
el13akr 11:b97dd4410d72 367 wait (0.1); //!<necessary wait so screen is clear and easy to read
el13akr 0:c2a88630fb72 368 }
el13akr 0:c2a88630fb72 369 }