my coursework
Dependencies: CheckRTC LPS25H hts221
Fork of ELEC350-extended-referral1 by
main.cpp@39:504f5dc30a33, 2017-11-15 (annotated)
- Committer:
- spanesar
- Date:
- Wed Nov 15 11:43:05 2017 +0000
- Revision:
- 39:504f5dc30a33
- Parent:
- 38:10aadcc9a2dd
- Child:
- 40:426cd176ce80
discussion with tutor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jonathan Austin |
0:2757d7abb7d9 | 1 | #include "mbed.h" |
martinsimpson | 32:260a288be58f | 2 | #include "rtos.h" |
noutram | 35:af125862c33e | 3 | #include "hts221.h" |
martinsimpson | 32:260a288be58f | 4 | #include "LPS25H.h" |
spanesar | 39:504f5dc30a33 | 5 | //#include "CheckRTC.h" |
spanesar | 39:504f5dc30a33 | 6 | |
martinsimpson | 32:260a288be58f | 7 | |
martinsimpson | 32:260a288be58f | 8 | DigitalOut myled(LED1); |
martinsimpson | 32:260a288be58f | 9 | I2C i2c2(I2C_SDA, I2C_SCL); |
spanesar | 39:504f5dc30a33 | 10 | Serial pc(USBTX, USBRX); |
noutram | 35:af125862c33e | 11 | float tempCelsius = 25.50; |
noutram | 35:af125862c33e | 12 | float humi = 55; |
spanesar | 39:504f5dc30a33 | 13 | int humiMax = 100; |
noutram | 35:af125862c33e | 14 | char cmd=0; |
spanesar | 39:504f5dc30a33 | 15 | uint32_t seconds = 0, minutes=0, hours=0; |
spanesar | 39:504f5dc30a33 | 16 | Ticker t; |
spanesar | 39:504f5dc30a33 | 17 | volatile static unsigned short sample16 = 0; |
spanesar | 39:504f5dc30a33 | 18 | void doSample1Hz(); |
spanesar | 39:504f5dc30a33 | 19 | int count = 0; |
spanesar | 39:504f5dc30a33 | 20 | char *buf; |
spanesar | 39:504f5dc30a33 | 21 | size_t sz; |
spanesar | 39:504f5dc30a33 | 22 | |
martinsimpson | 32:260a288be58f | 23 | |
noutram | 35:af125862c33e | 24 | LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR); |
noutram | 35:af125862c33e | 25 | HTS221 humidity(I2C_SDA, I2C_SCL); |
noutram | 35:af125862c33e | 26 | |
noutram | 35:af125862c33e | 27 | |
spanesar | 39:504f5dc30a33 | 28 | |
spanesar | 39:504f5dc30a33 | 29 | |
spanesar | 39:504f5dc30a33 | 30 | |
spanesar | 39:504f5dc30a33 | 31 | |
noutram | 35:af125862c33e | 32 | int main() |
spanesar | 39:504f5dc30a33 | 33 | { |
spanesar | 39:504f5dc30a33 | 34 | pc.baud(9600); //sets baud rate to 9600 |
spanesar | 39:504f5dc30a33 | 35 | time_t seconds = time(NULL); |
spanesar | 39:504f5dc30a33 | 36 | char time [32]; |
spanesar | 39:504f5dc30a33 | 37 | char date [32]; |
spanesar | 39:504f5dc30a33 | 38 | strftime(time, 32, "%H:%M:%S %p", localtime(&seconds)); |
spanesar | 39:504f5dc30a33 | 39 | strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds)); |
spanesar | 39:504f5dc30a33 | 40 | humidity.init(); |
spanesar | 39:504f5dc30a33 | 41 | humidity.calib(); |
spanesar | 39:504f5dc30a33 | 42 | //t.attach(doSample1Hz, 1.0); |
spanesar | 39:504f5dc30a33 | 43 | printf("press T to set time and date \n\r"); |
spanesar | 39:504f5dc30a33 | 44 | printf("press S to start sampling\n\r"); |
spanesar | 39:504f5dc30a33 | 45 | printf("press D to delete sensor data\n\r"); |
spanesar | 39:504f5dc30a33 | 46 | printf("Press A to read all sensor data\n\r"); |
spanesar | 39:504f5dc30a33 | 47 | printf("Press R to read sensor data in memory\n\r"); |
spanesar | 39:504f5dc30a33 | 48 | |
spanesar | 39:504f5dc30a33 | 49 | |
spanesar | 39:504f5dc30a33 | 50 | |
noutram | 35:af125862c33e | 51 | |
noutram | 35:af125862c33e | 52 | |
spanesar | 39:504f5dc30a33 | 53 | while(1) { |
noutram | 35:af125862c33e | 54 | |
spanesar | 39:504f5dc30a33 | 55 | cmd=NULL; |
spanesar | 39:504f5dc30a33 | 56 | while(cmd==NULL) { |
spanesar | 39:504f5dc30a33 | 57 | cmd=getchar(); |
spanesar | 39:504f5dc30a33 | 58 | } |
spanesar | 39:504f5dc30a33 | 59 | if(cmd=='?') { |
spanesar | 39:504f5dc30a33 | 60 | printf("SOFT253 simple Temperature Humidity and Pressure Sensor Monitor\n\r"); |
spanesar | 39:504f5dc30a33 | 61 | printf("Using the X-NUCLEO-IKS01A1 shield and MBED Libraries\n\r"); |
spanesar | 39:504f5dc30a33 | 62 | } |
spanesar | 39:504f5dc30a33 | 63 | /*--------------If 'A' is pressed then all sensor data is diplayed---------------------*/ |
spanesar | 39:504f5dc30a33 | 64 | if(cmd=='A') { |
spanesar | 39:504f5dc30a33 | 65 | humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels |
spanesar | 39:504f5dc30a33 | 66 | barometer.get(); // gets barometer readings |
spanesar | 39:504f5dc30a33 | 67 | // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial |
spanesar | 39:504f5dc30a33 | 68 | printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature()); |
spanesar | 39:504f5dc30a33 | 69 | myled = 1; // LED is ON |
spanesar | 39:504f5dc30a33 | 70 | Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds! |
spanesar | 39:504f5dc30a33 | 71 | myled = 0; // LED is OFF |
spanesar | 39:504f5dc30a33 | 72 | Thread::wait(100); // 100 ms |
spanesar | 39:504f5dc30a33 | 73 | } |
spanesar | 39:504f5dc30a33 | 74 | /*-------------- if 'T' is pressed then the time and date are set to the UTC below------------------------*/ |
spanesar | 39:504f5dc30a33 | 75 | if(cmd=='T') { |
spanesar | 39:504f5dc30a33 | 76 | set_time(1508268288); |
spanesar | 39:504f5dc30a33 | 77 | printf("time and date updated to %s %s\n\r", time, date); |
spanesar | 39:504f5dc30a33 | 78 | myled = 1; |
spanesar | 39:504f5dc30a33 | 79 | Thread::wait(200); |
spanesar | 39:504f5dc30a33 | 80 | myled = 0; |
spanesar | 39:504f5dc30a33 | 81 | Thread::wait(100); |
spanesar | 39:504f5dc30a33 | 82 | } |
spanesar | 39:504f5dc30a33 | 83 | /*-------------if 's' is pressed, 5 sample of data are taken and stored to the RAM every second-------------------------*/ |
spanesar | 39:504f5dc30a33 | 84 | if(cmd=='S') { |
spanesar | 39:504f5dc30a33 | 85 | for (count = 0; count < 5; count++){ |
spanesar | 39:504f5dc30a33 | 86 | sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature()); |
spanesar | 39:504f5dc30a33 | 87 | buf = (char *)malloc(sz + 1); |
spanesar | 39:504f5dc30a33 | 88 | snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature()); |
spanesar | 39:504f5dc30a33 | 89 | printf("%s\n\r",buf); |
spanesar | 39:504f5dc30a33 | 90 | printf("written to memory\n\r"); |
spanesar | 39:504f5dc30a33 | 91 | myled = 1; |
spanesar | 39:504f5dc30a33 | 92 | Thread::wait(200); |
spanesar | 39:504f5dc30a33 | 93 | myled = 0; |
spanesar | 39:504f5dc30a33 | 94 | Thread::wait(100); |
spanesar | 39:504f5dc30a33 | 95 | wait(1); |
spanesar | 39:504f5dc30a33 | 96 | } |
spanesar | 39:504f5dc30a33 | 97 | if(cmd=='R'){ |
spanesar | 39:504f5dc30a33 | 98 | printf("%s\n\r", buf); |
spanesar | 39:504f5dc30a33 | 99 | myled = 1; |
spanesar | 39:504f5dc30a33 | 100 | Thread::wait(200); |
spanesar | 39:504f5dc30a33 | 101 | myled = 0; |
spanesar | 39:504f5dc30a33 | 102 | Thread::wait (100); |
spanesar | 39:504f5dc30a33 | 103 | } |
spanesar | 39:504f5dc30a33 | 104 | } |
noutram | 35:af125862c33e | 105 | } |
spanesar | 39:504f5dc30a33 | 106 | |
FairyMental | 34:62aae7d507e2 | 107 | } |
spanesar | 39:504f5dc30a33 | 108 | void doSample1Hz() |
spanesar | 39:504f5dc30a33 | 109 | { |
spanesar | 39:504f5dc30a33 | 110 | //sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature()); |
spanesar | 39:504f5dc30a33 | 111 | //buf = (char *)malloc(sz + 1); |
spanesar | 39:504f5dc30a33 | 112 | //snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature()); |
spanesar | 39:504f5dc30a33 | 113 | |
spanesar | 39:504f5dc30a33 | 114 | } |