Reading Temperature and insolution and taking average and putting in FIFO and again taking average of FIFO and then displaying on LCD

Dependencies:   TextLCD mbed

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?

UserRevisionLine numberNew 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 }