Reading Temperature and insolution and taking average and putting in FIFO and again taking average of FIFO and then displaying on LCD
main.cpp@1:bdfc71ff49b2, 2014-10-31 (annotated)
- Committer:
- josmy
- Date:
- Fri Oct 31 05:52:49 2014 +0000
- Revision:
- 1:bdfc71ff49b2
- Parent:
- 0:c2d1ad5059da
Reading Temperature and Isolation using analog read and taking average and putting in 5 FIFO and again taking average and displaying on LCD;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bcostm | 0:c2d1ad5059da | 1 | #include "mbed.h" |
josmy | 1:bdfc71ff49b2 | 2 | #include "TextLCD.h" |
josmy | 1:bdfc71ff49b2 | 3 | #include "string.h" |
josmy | 1:bdfc71ff49b2 | 4 | |
josmy | 1:bdfc71ff49b2 | 5 | #define MAXSamples 50 |
josmy | 1:bdfc71ff49b2 | 6 | |
josmy | 1:bdfc71ff49b2 | 7 | #define MaxInsol 1160.0 |
josmy | 1:bdfc71ff49b2 | 8 | #define MaxTemp 1160.0 |
josmy | 1:bdfc71ff49b2 | 9 | |
josmy | 1:bdfc71ff49b2 | 10 | |
josmy | 1:bdfc71ff49b2 | 11 | TextLCD lcd(PA_8, PB_10, PA_10, PB_3, PB_5, PB_4); // rs, e, d4-d7 |
bcostm | 0:c2d1ad5059da | 12 | |
josmy | 1:bdfc71ff49b2 | 13 | AnalogIn Insol(A4); |
josmy | 1:bdfc71ff49b2 | 14 | AnalogIn Temp(A5); |
josmy | 1:bdfc71ff49b2 | 15 | |
josmy | 1:bdfc71ff49b2 | 16 | Serial pc(SERIAL_TX, SERIAL_RX); |
josmy | 1:bdfc71ff49b2 | 17 | DigitalOut myled(LED1); |
josmy | 1:bdfc71ff49b2 | 18 | float InsolR, TempR; |
josmy | 1:bdfc71ff49b2 | 19 | uint16_t InsolMap, TempMap; |
josmy | 1:bdfc71ff49b2 | 20 | |
josmy | 1:bdfc71ff49b2 | 21 | char buff[40]; |
josmy | 1:bdfc71ff49b2 | 22 | //uint16_t buffer[7]; |
josmy | 1:bdfc71ff49b2 | 23 | int i; |
josmy | 1:bdfc71ff49b2 | 24 | uint16_t FIFOI[5],FIFOT[5]; |
josmy | 1:bdfc71ff49b2 | 25 | |
josmy | 1:bdfc71ff49b2 | 26 | uint32_t val; |
josmy | 1:bdfc71ff49b2 | 27 | uint32_t count; |
josmy | 1:bdfc71ff49b2 | 28 | |
bcostm | 0:c2d1ad5059da | 29 | int main() { |
josmy | 1:bdfc71ff49b2 | 30 | |
josmy | 1:bdfc71ff49b2 | 31 | /* |
josmy | 1:bdfc71ff49b2 | 32 | while(1){ |
josmy | 1:bdfc71ff49b2 | 33 | |
josmy | 1:bdfc71ff49b2 | 34 | sprintf(buff,"Inso:%4u Temp:%4u",Insol.read_u16(),Temp.read_u16()); |
josmy | 1:bdfc71ff49b2 | 35 | |
josmy | 1:bdfc71ff49b2 | 36 | pc.printf(buff);pc.printf("\n"); |
josmy | 1:bdfc71ff49b2 | 37 | wait(0.2); |
josmy | 1:bdfc71ff49b2 | 38 | |
josmy | 1:bdfc71ff49b2 | 39 | } |
josmy | 1:bdfc71ff49b2 | 40 | */ |
josmy | 1:bdfc71ff49b2 | 41 | |
josmy | 1:bdfc71ff49b2 | 42 | |
josmy | 1:bdfc71ff49b2 | 43 | |
josmy | 1:bdfc71ff49b2 | 44 | |
josmy | 1:bdfc71ff49b2 | 45 | |
josmy | 1:bdfc71ff49b2 | 46 | |
josmy | 1:bdfc71ff49b2 | 47 | |
josmy | 1:bdfc71ff49b2 | 48 | |
josmy | 1:bdfc71ff49b2 | 49 | count=0; |
josmy | 1:bdfc71ff49b2 | 50 | while(1) { |
josmy | 1:bdfc71ff49b2 | 51 | |
josmy | 1:bdfc71ff49b2 | 52 | pc.printf("Count: %6u:",count++);pc.printf(" "); |
josmy | 1:bdfc71ff49b2 | 53 | |
josmy | 1:bdfc71ff49b2 | 54 | val=0; |
josmy | 1:bdfc71ff49b2 | 55 | for(i=1;i<=MAXSamples;i++){ |
josmy | 1:bdfc71ff49b2 | 56 | val += Insol.read_u16(); |
josmy | 1:bdfc71ff49b2 | 57 | } |
josmy | 1:bdfc71ff49b2 | 58 | val /= MAXSamples; |
josmy | 1:bdfc71ff49b2 | 59 | FIFOI[0] = FIFOI[1]; |
josmy | 1:bdfc71ff49b2 | 60 | FIFOI[1] = FIFOI[2]; |
josmy | 1:bdfc71ff49b2 | 61 | FIFOI[2] = FIFOI[3]; |
josmy | 1:bdfc71ff49b2 | 62 | FIFOI[3] = FIFOI[4]; |
josmy | 1:bdfc71ff49b2 | 63 | FIFOI[4] = (uint16_t)val; |
josmy | 1:bdfc71ff49b2 | 64 | val = 0; |
josmy | 1:bdfc71ff49b2 | 65 | for(i=0;i<=4;i++){ |
josmy | 1:bdfc71ff49b2 | 66 | val += FIFOI[i]; |
josmy | 1:bdfc71ff49b2 | 67 | } |
josmy | 1:bdfc71ff49b2 | 68 | val /= 5; |
josmy | 1:bdfc71ff49b2 | 69 | InsolR = (float) val; |
josmy | 1:bdfc71ff49b2 | 70 | |
josmy | 1:bdfc71ff49b2 | 71 | val=0; |
josmy | 1:bdfc71ff49b2 | 72 | for(i=1;i<=MAXSamples;i++){ |
josmy | 1:bdfc71ff49b2 | 73 | val += Temp.read_u16(); |
josmy | 1:bdfc71ff49b2 | 74 | } |
josmy | 1:bdfc71ff49b2 | 75 | val /= MAXSamples; |
josmy | 1:bdfc71ff49b2 | 76 | FIFOT[0] = FIFOT[1]; |
josmy | 1:bdfc71ff49b2 | 77 | FIFOT[1] = FIFOT[2]; |
josmy | 1:bdfc71ff49b2 | 78 | FIFOT[2] = FIFOT[3]; |
josmy | 1:bdfc71ff49b2 | 79 | FIFOT[3] = FIFOT[4]; |
josmy | 1:bdfc71ff49b2 | 80 | FIFOT[4] = (uint16_t)val; |
josmy | 1:bdfc71ff49b2 | 81 | val = 0; |
josmy | 1:bdfc71ff49b2 | 82 | for(i=0;i<=4;i++){ |
josmy | 1:bdfc71ff49b2 | 83 | val += FIFOT[i]; |
josmy | 1:bdfc71ff49b2 | 84 | } |
josmy | 1:bdfc71ff49b2 | 85 | val /= 5; |
josmy | 1:bdfc71ff49b2 | 86 | TempR = (float) val; |
josmy | 1:bdfc71ff49b2 | 87 | |
josmy | 1:bdfc71ff49b2 | 88 | |
josmy | 1:bdfc71ff49b2 | 89 | |
josmy | 1:bdfc71ff49b2 | 90 | InsolMap = (uint16_t)(InsolR * MaxInsol/4095.0); |
josmy | 1:bdfc71ff49b2 | 91 | TempMap = (uint16_t) (TempR *MaxTemp/4095.0); |
josmy | 1:bdfc71ff49b2 | 92 | |
josmy | 1:bdfc71ff49b2 | 93 | sprintf(buff,"Inso:%4u mW/cm2",InsolMap/10); |
josmy | 1:bdfc71ff49b2 | 94 | pc.printf(buff);pc.printf(" "); |
josmy | 1:bdfc71ff49b2 | 95 | |
josmy | 1:bdfc71ff49b2 | 96 | lcd.locate(0,0); |
josmy | 1:bdfc71ff49b2 | 97 | lcd.printf(buff); |
josmy | 1:bdfc71ff49b2 | 98 | |
josmy | 1:bdfc71ff49b2 | 99 | sprintf(buff,"Temp:%4u deg C",TempMap/10); |
josmy | 1:bdfc71ff49b2 | 100 | pc.printf(buff);pc.printf("\n"); |
josmy | 1:bdfc71ff49b2 | 101 | |
josmy | 1:bdfc71ff49b2 | 102 | lcd.locate(0,1); |
josmy | 1:bdfc71ff49b2 | 103 | lcd.printf(buff); |
josmy | 1:bdfc71ff49b2 | 104 | myled = !myled; |
josmy | 1:bdfc71ff49b2 | 105 | wait(.2); |
bcostm | 0:c2d1ad5059da | 106 | } |
bcostm | 0:c2d1ad5059da | 107 | } |