Abdulaziz Alissa
/
WeatherStationProject
Leeds University
main.cpp@1:477ed4a96308, 2015-05-11 (annotated)
- Committer:
- Gaz142
- Date:
- Mon May 11 21:58:29 2015 +0000
- Revision:
- 1:477ed4a96308
- Parent:
- 0:e8b157a824e7
New;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Gaz142 | 0:e8b157a824e7 | 1 | #include "mbed.h" |
Gaz142 | 0:e8b157a824e7 | 2 | #include "N5110.h" |
Gaz142 | 0:e8b157a824e7 | 3 | #include "BMP180.h" |
Gaz142 | 0:e8b157a824e7 | 4 | #include "beep.h" |
Gaz142 | 0:e8b157a824e7 | 5 | |
Gaz142 | 0:e8b157a824e7 | 6 | Serial serial(USBTX,USBRX); |
Gaz142 | 0:e8b157a824e7 | 7 | BMP180 bmp180(p28,p27); // SDA, SCL |
Gaz142 | 0:e8b157a824e7 | 8 | BusOut leds(LED1, LED2, LED3, LED4); // Debug - Error |
Gaz142 | 0:e8b157a824e7 | 9 | Beep buzzer(p21); // Buzzer Pin |
Gaz142 | 0:e8b157a824e7 | 10 | N5110 lcd(p7,p8,p9,p10,p11,p13,p26); // VCC,SCE,RST,D/C,MOSI,SCLK,LED |
Gaz142 | 0:e8b157a824e7 | 11 | InterruptIn unitChanger(p16); // unit changer button |
Gaz142 | 0:e8b157a824e7 | 12 | InterruptIn brightnessButton(p15); // sleep/brightness button |
Gaz142 | 0:e8b157a824e7 | 13 | AnalogIn battery(p17); // Battrey indicator |
Gaz142 | 0:e8b157a824e7 | 14 | DigitalOut led2(p24); // LED 1 |
Gaz142 | 0:e8b157a824e7 | 15 | DigitalOut led1(p23); // LED 2 |
Gaz142 | 0:e8b157a824e7 | 16 | DigitalOut sce(p8); // SCE |
Gaz142 | 0:e8b157a824e7 | 17 | SPI spi(p11,NC,p13); // SPI |
Gaz142 | 0:e8b157a824e7 | 18 | DigitalOut pwr(p7); // PWR |
Gaz142 | 0:e8b157a824e7 | 19 | DigitalOut dc(p10); // DC |
Gaz142 | 0:e8b157a824e7 | 20 | PwmOut led(p26); // LED |
Gaz142 | 0:e8b157a824e7 | 21 | |
Gaz142 | 0:e8b157a824e7 | 22 | Measurement measurement; // Store the measurement values |
Gaz142 | 0:e8b157a824e7 | 23 | Ticker message; // Alert message |
Gaz142 | 1:477ed4a96308 | 24 | Ticker valueReading; |
Gaz142 | 1:477ed4a96308 | 25 | Ticker interrupt; // Each 60 sec a reading is taken |
Gaz142 | 0:e8b157a824e7 | 26 | LocalFileSystem Local("local"); // Store the data |
Gaz142 | 0:e8b157a824e7 | 27 | |
Gaz142 | 0:e8b157a824e7 | 28 | void celsius(); // Celsius function |
Gaz142 | 0:e8b157a824e7 | 29 | void eraseRAM(); // Clear the RAM |
Gaz142 | 0:e8b157a824e7 | 30 | void displayOff(); // Turn off the display |
Gaz142 | 0:e8b157a824e7 | 31 | void displayOn(); // Turn on the display |
Gaz142 | 0:e8b157a824e7 | 32 | void ISR(); // Serial data |
Gaz142 | 0:e8b157a824e7 | 33 | void battreyIndicator(float); // Indicate the battrey lfie |
Gaz142 | 0:e8b157a824e7 | 34 | void registerTime(); // Time |
Gaz142 | 0:e8b157a824e7 | 35 | void setBrightness(float brightness); // Init the brightness |
Gaz142 | 0:e8b157a824e7 | 36 | void fahrenheit(); // Fahrenheit function |
Gaz142 | 1:477ed4a96308 | 37 | void dataWrite(float Measurement);// register data |
Gaz142 | 0:e8b157a824e7 | 38 | void error(); // indicate error |
Gaz142 | 0:e8b157a824e7 | 39 | void stop(); // stop the opreation |
Gaz142 | 0:e8b157a824e7 | 40 | void timeChange(); // intreeupt the time |
Gaz142 | 0:e8b157a824e7 | 41 | |
Gaz142 | 0:e8b157a824e7 | 42 | // Those are flags for the functions |
Gaz142 | 0:e8b157a824e7 | 43 | int registerTimeFlag = 0; |
Gaz142 | 0:e8b157a824e7 | 44 | int unitChangerFlag = 0; |
Gaz142 | 0:e8b157a824e7 | 45 | int celsiusFlag =0; |
Gaz142 | 0:e8b157a824e7 | 46 | int brightnessButtonFlag =0; |
Gaz142 | 1:477ed4a96308 | 47 | int setTimeFlag = 0; |
Gaz142 | 0:e8b157a824e7 | 48 | |
Gaz142 | 0:e8b157a824e7 | 49 | char buffer[30]; // creat a charracter |
Gaz142 | 0:e8b157a824e7 | 50 | char xString[16]; |
Gaz142 | 0:e8b157a824e7 | 51 | |
Gaz142 | 0:e8b157a824e7 | 52 | |
Gaz142 | 0:e8b157a824e7 | 53 | void delayOption() // Calls the Celsius and the Fahrenheit function, however they are delayed by 60 sec |
Gaz142 | 0:e8b157a824e7 | 54 | { |
Gaz142 | 0:e8b157a824e7 | 55 | fahrenheit(); |
Gaz142 | 0:e8b157a824e7 | 56 | celsius(); |
Gaz142 | 0:e8b157a824e7 | 57 | lcd.refresh(); |
Gaz142 | 0:e8b157a824e7 | 58 | } |
Gaz142 | 0:e8b157a824e7 | 59 | |
Gaz142 | 0:e8b157a824e7 | 60 | void unitChangerProperties() // When the button is pressed value = 0 which changes it to fahrenheit and other way around |
Gaz142 | 0:e8b157a824e7 | 61 | { |
Gaz142 | 0:e8b157a824e7 | 62 | |
Gaz142 | 0:e8b157a824e7 | 63 | if(unitChangerFlag == 1) { |
Gaz142 | 0:e8b157a824e7 | 64 | unitChangerFlag = 0; |
Gaz142 | 0:e8b157a824e7 | 65 | fahrenheit(); |
Gaz142 | 0:e8b157a824e7 | 66 | } else { // after the click it returns it to the beggning |
Gaz142 | 0:e8b157a824e7 | 67 | unitChangerFlag = 1; |
Gaz142 | 0:e8b157a824e7 | 68 | celsius(); |
Gaz142 | 0:e8b157a824e7 | 69 | } |
Gaz142 | 0:e8b157a824e7 | 70 | } |
Gaz142 | 0:e8b157a824e7 | 71 | |
Gaz142 | 0:e8b157a824e7 | 72 | void brightnessSleep() // Gives the button 6 clicks and then return it to the beginning so it can be clicked again |
Gaz142 | 0:e8b157a824e7 | 73 | { |
Gaz142 | 0:e8b157a824e7 | 74 | if(brightnessButtonFlag == 6) { |
Gaz142 | 0:e8b157a824e7 | 75 | brightnessButtonFlag = 5; |
Gaz142 | 0:e8b157a824e7 | 76 | } else if (brightnessButtonFlag == 5) { |
Gaz142 | 0:e8b157a824e7 | 77 | brightnessButtonFlag =4; |
Gaz142 | 0:e8b157a824e7 | 78 | } else if (brightnessButtonFlag ==4) { |
Gaz142 | 0:e8b157a824e7 | 79 | brightnessButtonFlag =3; |
Gaz142 | 0:e8b157a824e7 | 80 | } else if (brightnessButtonFlag==3) { |
Gaz142 | 0:e8b157a824e7 | 81 | brightnessButtonFlag=2; |
Gaz142 | 0:e8b157a824e7 | 82 | } else if (brightnessButtonFlag ==2) { |
Gaz142 | 0:e8b157a824e7 | 83 | brightnessButtonFlag =1; |
Gaz142 | 0:e8b157a824e7 | 84 | } else if (brightnessButtonFlag ==1) { |
Gaz142 | 0:e8b157a824e7 | 85 | brightnessButtonFlag =0; |
Gaz142 | 0:e8b157a824e7 | 86 | } else { |
Gaz142 | 0:e8b157a824e7 | 87 | brightnessButtonFlag =6; |
Gaz142 | 0:e8b157a824e7 | 88 | } |
Gaz142 | 0:e8b157a824e7 | 89 | } |
Gaz142 | 0:e8b157a824e7 | 90 | |
Gaz142 | 0:e8b157a824e7 | 91 | void buzzerMessage() // When the measurement.temperatureC reaches 27, the following buzz and message will appear |
Gaz142 | 0:e8b157a824e7 | 92 | { |
Gaz142 | 0:e8b157a824e7 | 93 | if ( measurement.temperatureC >= 27 ) { |
Gaz142 | 0:e8b157a824e7 | 94 | buzzer.beep(1000,0.3); |
Gaz142 | 0:e8b157a824e7 | 95 | lcd.printString("WARNING!", 15,15); |
Gaz142 | 0:e8b157a824e7 | 96 | lcd.refresh(); |
Gaz142 | 0:e8b157a824e7 | 97 | } else { |
Gaz142 | 0:e8b157a824e7 | 98 | lcd.printString(" ", 15,15); |
Gaz142 | 0:e8b157a824e7 | 99 | lcd.refresh(); |
Gaz142 | 0:e8b157a824e7 | 100 | } |
Gaz142 | 0:e8b157a824e7 | 101 | } |
Gaz142 | 0:e8b157a824e7 | 102 | |
Gaz142 | 0:e8b157a824e7 | 103 | int main() |
Gaz142 | 0:e8b157a824e7 | 104 | { |
Gaz142 | 0:e8b157a824e7 | 105 | bmp180.init(); // initialise the sensor |
Gaz142 | 0:e8b157a824e7 | 106 | lcd.init(); // first need to initialise display |
Gaz142 | 0:e8b157a824e7 | 107 | message.attach(&buzzerMessage,0.5); // the message function keep checking every 0.5 seconds |
Gaz142 | 0:e8b157a824e7 | 108 | valueReading.attach(&delayOption, 60.0); // the reading is delayed by 60 second, so every minute the reading will be taken |
Gaz142 | 0:e8b157a824e7 | 109 | battreyIndicator(battery); // call the battrey indicator function |
Gaz142 | 0:e8b157a824e7 | 110 | unitChanger.rise(&unitChangerProperties); // calls the unit changer button function. |
Gaz142 | 0:e8b157a824e7 | 111 | brightnessButton.rise(&brightnessSleep); // calls the sleep/brightness button function. |
Gaz142 | 0:e8b157a824e7 | 112 | delayOption(); // calls the delay function |
Gaz142 | 0:e8b157a824e7 | 113 | lcd.refresh(); // refresh the LCD. |
Gaz142 | 0:e8b157a824e7 | 114 | |
Gaz142 | 1:477ed4a96308 | 115 | // Section for tempearture |
Gaz142 | 1:477ed4a96308 | 116 | valueReading.attach(&stop,10.0); // Read temperature every 10 secondas |
Gaz142 | 1:477ed4a96308 | 117 | |
Gaz142 | 1:477ed4a96308 | 118 | // section for keeping track of time |
Gaz142 | 1:477ed4a96308 | 119 | serial.attach(&ISR); // attach serial ISR |
Gaz142 | 1:477ed4a96308 | 120 | valueReading.attach(&stop,300.0); |
Gaz142 | 1:477ed4a96308 | 121 | set_time(1425386440); // initialise time to current time |
Gaz142 | 1:477ed4a96308 | 122 | |
Gaz142 | 1:477ed4a96308 | 123 | interrupt.attach(&timeChange, 300.0); // print current time every 10.o seconds |
Gaz142 | 1:477ed4a96308 | 124 | |
Gaz142 | 1:477ed4a96308 | 125 | // Section for writing files |
Gaz142 | 1:477ed4a96308 | 126 | //int counter = 0; // variable to increment |
Gaz142 | 1:477ed4a96308 | 127 | |
Gaz142 | 0:e8b157a824e7 | 128 | while(1) { |
Gaz142 | 0:e8b157a824e7 | 129 | |
Gaz142 | 1:477ed4a96308 | 130 | stop(); |
Gaz142 | 1:477ed4a96308 | 131 | // section for writing files |
Gaz142 | 1:477ed4a96308 | 132 | // float temperature = getTemperature(); |
Gaz142 | 1:477ed4a96308 | 133 | dataWrite(measurement.temperatureC); // write current value to disk |
Gaz142 | 1:477ed4a96308 | 134 | |
Gaz142 | 1:477ed4a96308 | 135 | |
Gaz142 | 1:477ed4a96308 | 136 | |
Gaz142 | 1:477ed4a96308 | 137 | wait(1.0); // small delay |
Gaz142 | 1:477ed4a96308 | 138 | // Section for time tracking |
Gaz142 | 1:477ed4a96308 | 139 | if (setTimeFlag) { // if updated time has been sent |
Gaz142 | 1:477ed4a96308 | 140 | setTimeFlag = 0; // clear flag |
Gaz142 | 1:477ed4a96308 | 141 | registerTime(); // update time |
Gaz142 | 1:477ed4a96308 | 142 | } |
Gaz142 | 1:477ed4a96308 | 143 | |
Gaz142 | 1:477ed4a96308 | 144 | |
Gaz142 | 1:477ed4a96308 | 145 | |
Gaz142 | 0:e8b157a824e7 | 146 | if(brightnessButtonFlag == 6) { // starts / and after the last click it return to here and wakes up the screen |
Gaz142 | 0:e8b157a824e7 | 147 | displayOn(); |
Gaz142 | 0:e8b157a824e7 | 148 | lcd.setBrightness(0.2); |
Gaz142 | 0:e8b157a824e7 | 149 | lcd.refresh(); |
Gaz142 | 0:e8b157a824e7 | 150 | } else if (brightnessButtonFlag == 5) { // the first click increase brightness by 20% |
Gaz142 | 0:e8b157a824e7 | 151 | lcd.setBrightness(0.4); |
Gaz142 | 0:e8b157a824e7 | 152 | } else if (brightnessButtonFlag ==4) { |
Gaz142 | 0:e8b157a824e7 | 153 | lcd.setBrightness(0.6); |
Gaz142 | 0:e8b157a824e7 | 154 | } else if (brightnessButtonFlag==3) { |
Gaz142 | 0:e8b157a824e7 | 155 | lcd.setBrightness(0.8); |
Gaz142 | 0:e8b157a824e7 | 156 | } else if (brightnessButtonFlag==2) { |
Gaz142 | 0:e8b157a824e7 | 157 | lcd.setBrightness (1); |
Gaz142 | 0:e8b157a824e7 | 158 | } else if (brightnessButtonFlag==1) { // Turn off the LCD and put it to sleep, it calls the function which are written below |
Gaz142 | 0:e8b157a824e7 | 159 | displayOff(); |
Gaz142 | 0:e8b157a824e7 | 160 | lcd.clear(); |
Gaz142 | 0:e8b157a824e7 | 161 | buzzer.nobeep(); |
Gaz142 | 0:e8b157a824e7 | 162 | sleep(); |
Gaz142 | 0:e8b157a824e7 | 163 | } |
Gaz142 | 0:e8b157a824e7 | 164 | } |
Gaz142 | 0:e8b157a824e7 | 165 | } |
Gaz142 | 0:e8b157a824e7 | 166 | |
Gaz142 | 0:e8b157a824e7 | 167 | void celsius() // The function for the Celsius |
Gaz142 | 0:e8b157a824e7 | 168 | { |
Gaz142 | 0:e8b157a824e7 | 169 | char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) // so can display a string of a maximum 14 characters in length // or create formatted strings - ensure they aren't more than 14 characters long |
Gaz142 | 0:e8b157a824e7 | 170 | |
Gaz142 | 0:e8b157a824e7 | 171 | measurement = bmp180.readValues(); // read values (T in Celsius and P in mb) and print over serial port |
Gaz142 | 0:e8b157a824e7 | 172 | //wait(0.1); // short delau until next reading |
Gaz142 | 0:e8b157a824e7 | 173 | |
Gaz142 | 0:e8b157a824e7 | 174 | int length = sprintf(buffer,"T = %.2f C",measurement.temperatureC); // print formatted data to buffer // it is important the format specifier ensures the length will fit in the buffer |
Gaz142 | 0:e8b157a824e7 | 175 | if (length <= 14) // if string will fit on display |
Gaz142 | 0:e8b157a824e7 | 176 | lcd.printString(buffer,0,1); // display on screen |
Gaz142 | 0:e8b157a824e7 | 177 | |
Gaz142 | 0:e8b157a824e7 | 178 | length = sprintf(buffer,"P = %.2f mb",measurement.pressure); |
Gaz142 | 0:e8b157a824e7 | 179 | if (length <= 14) |
Gaz142 | 0:e8b157a824e7 | 180 | lcd.printString(buffer,0,2); |
Gaz142 | 0:e8b157a824e7 | 181 | lcd.refresh(); |
Gaz142 | 0:e8b157a824e7 | 182 | } |
Gaz142 | 0:e8b157a824e7 | 183 | |
Gaz142 | 0:e8b157a824e7 | 184 | void fahrenheit() // The function for the fahrenheit |
Gaz142 | 0:e8b157a824e7 | 185 | { |
Gaz142 | 0:e8b157a824e7 | 186 | char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) // so can display a string of a maximum 14 characters in length // or create formatted strings - ensure they aren't more than 14 characters long |
Gaz142 | 0:e8b157a824e7 | 187 | |
Gaz142 | 0:e8b157a824e7 | 188 | measurement = bmp180.readValues(); // read values (T in fahrenheit and P in mb) and print over serial port //serial.printf("T = %.2f F P = %.2f mb\n",measurement.temperature,measurement.pressure); |
Gaz142 | 0:e8b157a824e7 | 189 | //wait(0.1); // short delau until next reading |
Gaz142 | 0:e8b157a824e7 | 190 | |
Gaz142 | 0:e8b157a824e7 | 191 | int length = sprintf(buffer,"T = %.2f F",measurement.temperatureF); // print formatted data to buffer // it is important the format specifier ensures the length will fit in the buffer |
Gaz142 | 0:e8b157a824e7 | 192 | if (length <= 14) // if string will fit on display |
Gaz142 | 0:e8b157a824e7 | 193 | lcd.printString(buffer,0,1); // display on screen |
Gaz142 | 0:e8b157a824e7 | 194 | |
Gaz142 | 0:e8b157a824e7 | 195 | length = sprintf(buffer,"P = %.2f mb",measurement.pressure); |
Gaz142 | 0:e8b157a824e7 | 196 | if (length <= 14) |
Gaz142 | 0:e8b157a824e7 | 197 | lcd.printString(buffer,0,2); |
Gaz142 | 0:e8b157a824e7 | 198 | lcd.refresh(); |
Gaz142 | 0:e8b157a824e7 | 199 | } |
Gaz142 | 0:e8b157a824e7 | 200 | |
Gaz142 | 0:e8b157a824e7 | 201 | void eraseRAM() // Clear the RAM |
Gaz142 | 0:e8b157a824e7 | 202 | { |
Gaz142 | 0:e8b157a824e7 | 203 | int i; |
Gaz142 | 0:e8b157a824e7 | 204 | sce.write(0); |
Gaz142 | 0:e8b157a824e7 | 205 | for(i =0; i < 504; i++) { |
Gaz142 | 0:e8b157a824e7 | 206 | spi.write(0x00); |
Gaz142 | 0:e8b157a824e7 | 207 | } |
Gaz142 | 0:e8b157a824e7 | 208 | |
Gaz142 | 0:e8b157a824e7 | 209 | } |
Gaz142 | 0:e8b157a824e7 | 210 | |
Gaz142 | 0:e8b157a824e7 | 211 | void displayOn() // Turn on the display |
Gaz142 | 0:e8b157a824e7 | 212 | { |
Gaz142 | 0:e8b157a824e7 | 213 | setBrightness(1.0); // 100% |
Gaz142 | 0:e8b157a824e7 | 214 | pwr.write(1); |
Gaz142 | 0:e8b157a824e7 | 215 | |
Gaz142 | 0:e8b157a824e7 | 216 | } |
Gaz142 | 0:e8b157a824e7 | 217 | |
Gaz142 | 0:e8b157a824e7 | 218 | void displayOff() // Turn off the display |
Gaz142 | 0:e8b157a824e7 | 219 | { |
Gaz142 | 0:e8b157a824e7 | 220 | setBrightness(0.0); // 0% |
Gaz142 | 0:e8b157a824e7 | 221 | eraseRAM(); // calls the function |
Gaz142 | 0:e8b157a824e7 | 222 | |
Gaz142 | 0:e8b157a824e7 | 223 | } |
Gaz142 | 0:e8b157a824e7 | 224 | |
Gaz142 | 0:e8b157a824e7 | 225 | void setBrightness(float brightness) // set the brightness |
Gaz142 | 0:e8b157a824e7 | 226 | { |
Gaz142 | 0:e8b157a824e7 | 227 | if(brightness < 0.0) { |
Gaz142 | 0:e8b157a824e7 | 228 | brightness = 0.0; |
Gaz142 | 0:e8b157a824e7 | 229 | } |
Gaz142 | 0:e8b157a824e7 | 230 | if (brightness > 1.0) { |
Gaz142 | 0:e8b157a824e7 | 231 | brightness = 1.0; |
Gaz142 | 0:e8b157a824e7 | 232 | } |
Gaz142 | 0:e8b157a824e7 | 233 | led.write(brightness); |
Gaz142 | 0:e8b157a824e7 | 234 | } |
Gaz142 | 0:e8b157a824e7 | 235 | |
Gaz142 | 0:e8b157a824e7 | 236 | void battreyIndicator(float voltageIn) // indicate the battrey life |
Gaz142 | 0:e8b157a824e7 | 237 | { |
Gaz142 | 0:e8b157a824e7 | 238 | if (voltageIn >=2.5) { // if the voltage equal or larger than 2.5V the green LED will light |
Gaz142 | 0:e8b157a824e7 | 239 | led2 =0; |
Gaz142 | 0:e8b157a824e7 | 240 | led1 =1; |
Gaz142 | 0:e8b157a824e7 | 241 | } |
Gaz142 | 0:e8b157a824e7 | 242 | if (voltageIn <=2.5) { // if the voltage equal or smaller than 2.5V the red LED will light |
Gaz142 | 0:e8b157a824e7 | 243 | led1= 0; |
Gaz142 | 0:e8b157a824e7 | 244 | led2= 1; |
Gaz142 | 0:e8b157a824e7 | 245 | } |
Gaz142 | 0:e8b157a824e7 | 246 | } |
Gaz142 | 0:e8b157a824e7 | 247 | |
Gaz142 | 0:e8b157a824e7 | 248 | |
Gaz142 | 0:e8b157a824e7 | 249 | void ISR() |
Gaz142 | 0:e8b157a824e7 | 250 | { |
Gaz142 | 0:e8b157a824e7 | 251 | serial.gets(xString,16); |
Gaz142 | 0:e8b157a824e7 | 252 | registerTimeFlag = 1; |
Gaz142 | 0:e8b157a824e7 | 253 | } |
Gaz142 | 0:e8b157a824e7 | 254 | // Writing |
Gaz142 | 0:e8b157a824e7 | 255 | void dataWrite(float Measurement) |
Gaz142 | 0:e8b157a824e7 | 256 | { |
Gaz142 | 0:e8b157a824e7 | 257 | |
Gaz142 | 0:e8b157a824e7 | 258 | char buffer[30]; // store time |
Gaz142 | 0:e8b157a824e7 | 259 | time_t seconds = time(NULL); // get time |
Gaz142 | 0:e8b157a824e7 | 260 | // time and date |
Gaz142 | 0:e8b157a824e7 | 261 | strftime(buffer, 30 , "%X %D", localtime(&seconds)); |
Gaz142 | 0:e8b157a824e7 | 262 | |
Gaz142 | 0:e8b157a824e7 | 263 | FILE *fp = fopen("/local/log.csv", "a"); // open log |
Gaz142 | 0:e8b157a824e7 | 264 | // Create file |
Gaz142 | 0:e8b157a824e7 | 265 | fprintf(fp,"%f,%s\n",measurement.temperatureC, buffer); // print string to file |
Gaz142 | 0:e8b157a824e7 | 266 | fclose(fp); // Close it |
Gaz142 | 0:e8b157a824e7 | 267 | } |
Gaz142 | 0:e8b157a824e7 | 268 | |
Gaz142 | 0:e8b157a824e7 | 269 | // Incase of error |
Gaz142 | 0:e8b157a824e7 | 270 | void error(int code) |
Gaz142 | 0:e8b157a824e7 | 271 | { |
Gaz142 | 0:e8b157a824e7 | 272 | while(1) { |
Gaz142 | 0:e8b157a824e7 | 273 | leds = 0; |
Gaz142 | 0:e8b157a824e7 | 274 | wait(0.25); |
Gaz142 | 0:e8b157a824e7 | 275 | leds = code; |
Gaz142 | 0:e8b157a824e7 | 276 | wait(0.25); |
Gaz142 | 0:e8b157a824e7 | 277 | } |
Gaz142 | 0:e8b157a824e7 | 278 | } |
Gaz142 | 0:e8b157a824e7 | 279 | |
Gaz142 | 0:e8b157a824e7 | 280 | // register Temperature |
Gaz142 | 0:e8b157a824e7 | 281 | void stop() |
Gaz142 | 0:e8b157a824e7 | 282 | { |
Gaz142 | 0:e8b157a824e7 | 283 | serial.printf("T = %f C\n",measurement.temperatureC); // Show temp value |
Gaz142 | 0:e8b157a824e7 | 284 | dataWrite(measurement.temperatureC); // write temp value |
Gaz142 | 0:e8b157a824e7 | 285 | } |
Gaz142 | 0:e8b157a824e7 | 286 | |
Gaz142 | 0:e8b157a824e7 | 287 | void registerTime() |
Gaz142 | 0:e8b157a824e7 | 288 | { |
Gaz142 | 0:e8b157a824e7 | 289 | // register the time for debugging purposes |
Gaz142 | 0:e8b157a824e7 | 290 | serial.printf("set_time - %s",xString); |
Gaz142 | 0:e8b157a824e7 | 291 | // String -> integer |
Gaz142 | 0:e8b157a824e7 | 292 | int time = atoi(xString); |
Gaz142 | 0:e8b157a824e7 | 293 | set_time(time); |
Gaz142 | 0:e8b157a824e7 | 294 | } |
Gaz142 | 0:e8b157a824e7 | 295 | |
Gaz142 | 0:e8b157a824e7 | 296 | // Time |
Gaz142 | 0:e8b157a824e7 | 297 | void timeChange() |
Gaz142 | 0:e8b157a824e7 | 298 | { |
Gaz142 | 0:e8b157a824e7 | 299 | char buffer[30]; // store time |
Gaz142 | 0:e8b157a824e7 | 300 | time_t seconds = time(NULL); // get current time |
Gaz142 | 0:e8b157a824e7 | 301 | // format to string |
Gaz142 | 0:e8b157a824e7 | 302 | strftime(buffer, 30 , "%X %D", localtime(&seconds)); |
Gaz142 | 0:e8b157a824e7 | 303 | // serial |
Gaz142 | 0:e8b157a824e7 | 304 | serial.printf("Time = %s\n",buffer); |
Gaz142 | 0:e8b157a824e7 | 305 | } |