Panagiotis Mitseas
/
SOFT253_Assignment_V3
READDELETEALL
Fork of SOFT253_Assignment_V2 by
main.cpp@36:7426f37f0c96, 2017-05-12 (annotated)
- Committer:
- akovaci
- Date:
- Fri May 12 20:30:29 2017 +0000
- Revision:
- 36:7426f37f0c96
- Parent:
- 35:af125862c33e
- Child:
- 37:b62b3aa19645
soft253
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" |
akovaci | 36:7426f37f0c96 | 5 | Serial pc(USBTX, USBRX); |
martinsimpson | 32:260a288be58f | 6 | |
noutram | 35:af125862c33e | 7 | |
akovaci | 36:7426f37f0c96 | 8 | #define N 10 |
akovaci | 36:7426f37f0c96 | 9 | DigitalOut myled(D7); |
akovaci | 36:7426f37f0c96 | 10 | Ticker t; |
martinsimpson | 32:260a288be58f | 11 | I2C i2c2(I2C_SDA, I2C_SCL); |
noutram | 35:af125862c33e | 12 | |
noutram | 35:af125862c33e | 13 | float tempCelsius = 25.50; |
noutram | 35:af125862c33e | 14 | float humi = 55; |
noutram | 35:af125862c33e | 15 | int humiMax = 100; |
noutram | 35:af125862c33e | 16 | char cmd=0; |
akovaci | 36:7426f37f0c96 | 17 | float tempArray[N]; |
akovaci | 36:7426f37f0c96 | 18 | float humArray[N]; |
akovaci | 36:7426f37f0c96 | 19 | float pressArray[N]; |
noutram | 35:af125862c33e | 20 | uint32_t seconds = 0, minutes=0, hours=0; |
akovaci | 36:7426f37f0c96 | 21 | static float nextTEMPsample, nextHUMsample, nextPRESSsample; |
akovaci | 36:7426f37f0c96 | 22 | |
akovaci | 36:7426f37f0c96 | 23 | static int indexOfOldest = (N-1); |
martinsimpson | 32:260a288be58f | 24 | |
noutram | 35:af125862c33e | 25 | LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR); |
noutram | 35:af125862c33e | 26 | HTS221 humidity(I2C_SDA, I2C_SCL); |
noutram | 35:af125862c33e | 27 | |
noutram | 35:af125862c33e | 28 | |
akovaci | 36:7426f37f0c96 | 29 | void adcISR(); |
akovaci | 36:7426f37f0c96 | 30 | |
akovaci | 36:7426f37f0c96 | 31 | |
akovaci | 36:7426f37f0c96 | 32 | |
akovaci | 36:7426f37f0c96 | 33 | typedef struct { |
akovaci | 36:7426f37f0c96 | 34 | |
akovaci | 36:7426f37f0c96 | 35 | float tempVal ; |
akovaci | 36:7426f37f0c96 | 36 | float humVal; |
akovaci | 36:7426f37f0c96 | 37 | float pressVal; |
akovaci | 36:7426f37f0c96 | 38 | }message_t; |
martinsimpson | 32:260a288be58f | 39 | |
akovaci | 36:7426f37f0c96 | 40 | Mail<message_t, 10> mail_box; |
akovaci | 36:7426f37f0c96 | 41 | |
akovaci | 36:7426f37f0c96 | 42 | void adcISR() |
akovaci | 36:7426f37f0c96 | 43 | { |
akovaci | 36:7426f37f0c96 | 44 | message_t *message = mail_box.alloc(); |
akovaci | 36:7426f37f0c96 | 45 | message->tempVal = tempCelsius; |
akovaci | 36:7426f37f0c96 | 46 | message->humVal = humi; |
akovaci | 36:7426f37f0c96 | 47 | message->pressVal = barometer.pressure(); |
akovaci | 36:7426f37f0c96 | 48 | myled=1; |
akovaci | 36:7426f37f0c96 | 49 | mail_box.put(message); |
akovaci | 36:7426f37f0c96 | 50 | //Thread::wait(1000); |
akovaci | 36:7426f37f0c96 | 51 | |
akovaci | 36:7426f37f0c96 | 52 | } |
akovaci | 36:7426f37f0c96 | 53 | void thread1 (void const* arg) |
akovaci | 36:7426f37f0c96 | 54 | { |
akovaci | 36:7426f37f0c96 | 55 | |
akovaci | 36:7426f37f0c96 | 56 | pc.baud(115200); |
akovaci | 36:7426f37f0c96 | 57 | pc.printf("Temperature,Humidity,Pressure\n\n"); |
akovaci | 36:7426f37f0c96 | 58 | while(1) |
akovaci | 36:7426f37f0c96 | 59 | { |
akovaci | 36:7426f37f0c96 | 60 | |
akovaci | 36:7426f37f0c96 | 61 | osEvent evt = mail_box.get(); |
akovaci | 36:7426f37f0c96 | 62 | if (evt.status == osEventMail) |
akovaci | 36:7426f37f0c96 | 63 | { |
akovaci | 36:7426f37f0c96 | 64 | for (unsigned int n=(N-1); n>0; n--) |
akovaci | 36:7426f37f0c96 | 65 | { |
akovaci | 36:7426f37f0c96 | 66 | tempArray[n]= tempArray[n-1]; |
akovaci | 36:7426f37f0c96 | 67 | humArray[n]= humArray[n-1]; |
akovaci | 36:7426f37f0c96 | 68 | pressArray[n]= pressArray[n-1]; |
akovaci | 36:7426f37f0c96 | 69 | } |
akovaci | 36:7426f37f0c96 | 70 | message_t *message = (message_t*)evt.value.p; |
akovaci | 36:7426f37f0c96 | 71 | tempArray[0]= message->tempVal; |
akovaci | 36:7426f37f0c96 | 72 | humArray[0] = message->humVal; |
akovaci | 36:7426f37f0c96 | 73 | pressArray[0]= message->pressVal; |
akovaci | 36:7426f37f0c96 | 74 | for (unsigned int n=0; n<N; n++) |
akovaci | 36:7426f37f0c96 | 75 | { |
akovaci | 36:7426f37f0c96 | 76 | pc.printf("the element of %d is %4.2f\n\r ",n,tempArray[n]); |
akovaci | 36:7426f37f0c96 | 77 | wait(1.0); |
akovaci | 36:7426f37f0c96 | 78 | } |
akovaci | 36:7426f37f0c96 | 79 | |
akovaci | 36:7426f37f0c96 | 80 | // pc.printf("%4.2f,%3.1f,%6.1f\n\r", tempArray[N/2], humArray[N/2], pressArray[N/2]); |
akovaci | 36:7426f37f0c96 | 81 | |
akovaci | 36:7426f37f0c96 | 82 | mail_box.free(message); |
akovaci | 36:7426f37f0c96 | 83 | } |
akovaci | 36:7426f37f0c96 | 84 | } |
akovaci | 36:7426f37f0c96 | 85 | } |
akovaci | 36:7426f37f0c96 | 86 | char answer; |
akovaci | 36:7426f37f0c96 | 87 | int main(void) |
akovaci | 36:7426f37f0c96 | 88 | { |
akovaci | 36:7426f37f0c96 | 89 | |
akovaci | 36:7426f37f0c96 | 90 | puts("Loading... \n\n"); |
akovaci | 36:7426f37f0c96 | 91 | Thread thread(thread1); |
akovaci | 36:7426f37f0c96 | 92 | t.attach(&adcISR,15); |
akovaci | 36:7426f37f0c96 | 93 | |
akovaci | 36:7426f37f0c96 | 94 | while(1) |
noutram | 35:af125862c33e | 95 | { |
akovaci | 36:7426f37f0c96 | 96 | |
akovaci | 36:7426f37f0c96 | 97 | |
akovaci | 36:7426f37f0c96 | 98 | |
akovaci | 36:7426f37f0c96 | 99 | humidity.init(); |
akovaci | 36:7426f37f0c96 | 100 | humidity.calib(); |
akovaci | 36:7426f37f0c96 | 101 | humidity.ReadTempHumi(&tempCelsius, &humi); |
akovaci | 36:7426f37f0c96 | 102 | barometer.get(); |
akovaci | 36:7426f37f0c96 | 103 | barometer.pressure(); |
akovaci | 36:7426f37f0c96 | 104 | barometer.temperature(); |
akovaci | 36:7426f37f0c96 | 105 | sleep(); |
akovaci | 36:7426f37f0c96 | 106 | Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds! |
akovaci | 36:7426f37f0c96 | 107 | myled = 0; // LED is OFF |
akovaci | 36:7426f37f0c96 | 108 | Thread::wait(100); // 100 ms |
akovaci | 36:7426f37f0c96 | 109 | |
akovaci | 36:7426f37f0c96 | 110 | |
akovaci | 36:7426f37f0c96 | 111 | |
akovaci | 36:7426f37f0c96 | 112 | |
FairyMental | 34:62aae7d507e2 | 113 | } |
akovaci | 36:7426f37f0c96 | 114 | |
noutram | 35:af125862c33e | 115 | } |
noutram | 35:af125862c33e | 116 | |
noutram | 35:af125862c33e | 117 | |
noutram | 35:af125862c33e | 118 | |
akovaci | 36:7426f37f0c96 | 119 | |
noutram | 35:af125862c33e | 120 | |
akovaci | 36:7426f37f0c96 | 121 | |
noutram | 35:af125862c33e | 122 | |
akovaci | 36:7426f37f0c96 | 123 | |
akovaci | 36:7426f37f0c96 | 124 | |
akovaci | 36:7426f37f0c96 | 125 | |
akovaci | 36:7426f37f0c96 | 126 |