Dependencies:   mbed

Committer:
gbeardall
Date:
Thu Aug 25 12:46:50 2011 +0000
Revision:
1:bdb889fd3bef
Parent:
0:dba2bcefd284
Child:
2:5628e75c533e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gbeardall 1:bdb889fd3bef 1 /*
gbeardall 1:bdb889fd3bef 2 * humidity1
gbeardall 1:bdb889fd3bef 3 *
gbeardall 1:bdb889fd3bef 4 */
gbeardall 1:bdb889fd3bef 5
gbeardall 0:dba2bcefd284 6 #include "mbed.h"
gbeardall 0:dba2bcefd284 7
gbeardall 0:dba2bcefd284 8 DigitalOut myled(LED1);
gbeardall 0:dba2bcefd284 9
gbeardall 0:dba2bcefd284 10 AnalogIn hum(p20);
gbeardall 0:dba2bcefd284 11 AnalogIn ref(p19);
gbeardall 0:dba2bcefd284 12
gbeardall 1:bdb889fd3bef 13 int main() {
gbeardall 1:bdb889fd3bef 14 float av0 = 0.0;
gbeardall 1:bdb889fd3bef 15 float alpha = 0.5;
gbeardall 0:dba2bcefd284 16
gbeardall 1:bdb889fd3bef 17 printf("humidity1\n\r");
gbeardall 1:bdb889fd3bef 18
gbeardall 0:dba2bcefd284 19 while(1) {
gbeardall 0:dba2bcefd284 20
gbeardall 1:bdb889fd3bef 21 // read many times to remove noise
gbeardall 1:bdb889fd3bef 22 int n = 1000;
gbeardall 1:bdb889fd3bef 23 float h = 0.0;
gbeardall 1:bdb889fd3bef 24 float r = 0.0;
gbeardall 1:bdb889fd3bef 25 float v = 0.0;
gbeardall 1:bdb889fd3bef 26 for(int i=0; i<n; ++i) {
gbeardall 1:bdb889fd3bef 27 float h1, r1;
gbeardall 1:bdb889fd3bef 28 h1 = hum.read();
gbeardall 1:bdb889fd3bef 29 r1 = ref.read();
gbeardall 1:bdb889fd3bef 30 h += h1;
gbeardall 1:bdb889fd3bef 31 r += r1;
gbeardall 1:bdb889fd3bef 32 v += 5.0*h1/r1; // convert to 5v reference
gbeardall 1:bdb889fd3bef 33 }
gbeardall 1:bdb889fd3bef 34 h /= n;
gbeardall 1:bdb889fd3bef 35 r /= n;
gbeardall 1:bdb889fd3bef 36 v /= n;
gbeardall 0:dba2bcefd284 37
gbeardall 1:bdb889fd3bef 38 // EMA
gbeardall 1:bdb889fd3bef 39 float av = av0 + alpha*(v-av0);
gbeardall 1:bdb889fd3bef 40 av0 = av;
gbeardall 0:dba2bcefd284 41
gbeardall 1:bdb889fd3bef 42 // scale to humidity%
gbeardall 1:bdb889fd3bef 43 float m = (av-0.8)/3.0*100.0;
gbeardall 0:dba2bcefd284 44
gbeardall 1:bdb889fd3bef 45 printf("h=%1.4f r=%1.4f %1.4fv %1.4fv %3.1f%%\n\r", h, r, v, av, m );
gbeardall 0:dba2bcefd284 46
gbeardall 0:dba2bcefd284 47 myled = 1;
gbeardall 0:dba2bcefd284 48 wait(0.2);
gbeardall 0:dba2bcefd284 49 myled = 0;
gbeardall 0:dba2bcefd284 50 wait(0.8);
gbeardall 1:bdb889fd3bef 51
gbeardall 1:bdb889fd3bef 52 } // while
gbeardall 1:bdb889fd3bef 53
gbeardall 1:bdb889fd3bef 54 } // main
gbeardall 1:bdb889fd3bef 55