AND / Mbed 2 deprecated handheld_with_solenoid

Dependencies:   mbed

Committer:
christodoulos
Date:
Fri Mar 22 10:31:21 2019 +0000
Revision:
0:958e045ea7d1
Child:
1:af991edb6dc1
Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
christodoulos 0:958e045ea7d1 1 #include "mbed.h"
christodoulos 0:958e045ea7d1 2 #include "co2.h"
christodoulos 0:958e045ea7d1 3
christodoulos 0:958e045ea7d1 4 AnalogIn flowIn(A0);
christodoulos 0:958e045ea7d1 5 AnalogIn temp(A2);
christodoulos 0:958e045ea7d1 6 Timer t;
christodoulos 0:958e045ea7d1 7 Thread co2Thread;
christodoulos 0:958e045ea7d1 8 Thread flowThread;
christodoulos 0:958e045ea7d1 9 Thread tempThread;
christodoulos 0:958e045ea7d1 10
christodoulos 0:958e045ea7d1 11 float flowVal;
christodoulos 0:958e045ea7d1 12
christodoulos 0:958e045ea7d1 13 void flow(){
christodoulos 0:958e045ea7d1 14 while(1){
christodoulos 0:958e045ea7d1 15 flowVal=3.3*flowIn; //Logic level 3.3
christodoulos 0:958e045ea7d1 16 // printf("Flow: %f", flowVal);
christodoulos 0:958e045ea7d1 17 }
christodoulos 0:958e045ea7d1 18 }
christodoulos 0:958e045ea7d1 19
christodoulos 0:958e045ea7d1 20 float t2Cel;
christodoulos 0:958e045ea7d1 21
christodoulos 0:958e045ea7d1 22 void getTemp(){
christodoulos 0:958e045ea7d1 23 while(1){
christodoulos 0:958e045ea7d1 24 float B = 3478; //Define thermistor constant
christodoulos 0:958e045ea7d1 25 float rRef=10e3; // Define reference resistance
christodoulos 0:958e045ea7d1 26 float r1=10e3; // Define thermistor resistance at 25 C
christodoulos 0:958e045ea7d1 27 float t1=25+273; // Define thermistor initial temperature s 25C in Kelvin
christodoulos 0:958e045ea7d1 28 float x = temp.read(); //Measure input voltage at pin A0 in bits
christodoulos 0:958e045ea7d1 29 float v = 3.3*x; //Convert bits into voltage
christodoulos 0:958e045ea7d1 30 float r2 = (3.3*rRef/v)-rRef; //Convert voltage into thermistor resistance
christodoulos 0:958e045ea7d1 31 float t2 = (B*t1)/(B-t1*log(r1/r2)); //Convert thermistor resistance into temperature in Kelvin (log means natural logarithm ln)
christodoulos 0:958e045ea7d1 32 t2Cel = t2-273; //Convert temperature from Kelvin to Celcius
christodoulos 0:958e045ea7d1 33 // printf("Temp: %f\n", t2Cel);
christodoulos 0:958e045ea7d1 34 }
christodoulos 0:958e045ea7d1 35 }
christodoulos 0:958e045ea7d1 36
christodoulos 0:958e045ea7d1 37
christodoulos 0:958e045ea7d1 38
christodoulos 0:958e045ea7d1 39 int main()
christodoulos 0:958e045ea7d1 40 {
christodoulos 0:958e045ea7d1 41
christodoulos 0:958e045ea7d1 42 int myArray[9];
christodoulos 0:958e045ea7d1 43 long double var=0.0;
christodoulos 0:958e045ea7d1 44 float sigma=0.0;
christodoulos 0:958e045ea7d1 45 unsigned int sum=0;
christodoulos 0:958e045ea7d1 46 int difSum=0;
christodoulos 0:958e045ea7d1 47 int avg=0;
christodoulos 0:958e045ea7d1 48 unsigned long long sqSum=0;
christodoulos 0:958e045ea7d1 49 bool flag=false;
christodoulos 0:958e045ea7d1 50
christodoulos 0:958e045ea7d1 51 flowThread.start(flow);
christodoulos 0:958e045ea7d1 52 tempThread.start(getTemp);
christodoulos 0:958e045ea7d1 53 carbon();
christodoulos 0:958e045ea7d1 54 t.start();
christodoulos 0:958e045ea7d1 55
christodoulos 0:958e045ea7d1 56 while(1){
christodoulos 0:958e045ea7d1 57 printf("CO2: %d, Flow: %f, Temp: %f\n", carbon(), flowVal, t2Cel); //COOL TERM
christodoulos 0:958e045ea7d1 58 // printf("$d %f %f;", carbon(), flowVal, t2Cel); //Serial plotter
christodoulos 0:958e045ea7d1 59 }
christodoulos 0:958e045ea7d1 60
christodoulos 0:958e045ea7d1 61
christodoulos 0:958e045ea7d1 62 // while(1){
christodoulos 0:958e045ea7d1 63 // int array[9]={0,0,0,0,0,0,0,0,0};
christodoulos 0:958e045ea7d1 64 // for(int i=0;i<=8;i++){
christodoulos 0:958e045ea7d1 65 // array[i]=carbon();
christodoulos 0:958e045ea7d1 66 // }
christodoulos 0:958e045ea7d1 67 // printf("%d %d %d %d %d %d %d %d %d\n", array[0], array[1], array[2], array[3], array[4], array[5], array[6], array[7], array[8]);
christodoulos 0:958e045ea7d1 68 //
christodoulos 0:958e045ea7d1 69 // }
christodoulos 0:958e045ea7d1 70 //
christodoulos 0:958e045ea7d1 71 // for(int i=0;i<9;i++){ //Get first 9 carbon values
christodoulos 0:958e045ea7d1 72 // myArray[i]=carbon();
christodoulos 0:958e045ea7d1 73 // printf("%d ", myArray[i]);
christodoulos 0:958e045ea7d1 74 // }
christodoulos 0:958e045ea7d1 75 //
christodoulos 0:958e045ea7d1 76 // printf("\n");
christodoulos 0:958e045ea7d1 77 //
christodoulos 0:958e045ea7d1 78 // while(flag!=true){
christodoulos 0:958e045ea7d1 79 // for(int i=0;i<9;i++){
christodoulos 0:958e045ea7d1 80 // sum+=myArray[i]; //Find sum
christodoulos 0:958e045ea7d1 81 // }
christodoulos 0:958e045ea7d1 82 //
christodoulos 0:958e045ea7d1 83 // avg=sum/9;//find average
christodoulos 0:958e045ea7d1 84 //
christodoulos 0:958e045ea7d1 85 // printf("Avg: %d\n", avg);
christodoulos 0:958e045ea7d1 86 //
christodoulos 0:958e045ea7d1 87 // for(int i=0;i<9;i++){
christodoulos 0:958e045ea7d1 88 // difSum+=(myArray[i]-avg)*(myArray[i]-avg); //Find sum of difference between value X and mean
christodoulos 0:958e045ea7d1 89 // }
christodoulos 0:958e045ea7d1 90 //
christodoulos 0:958e045ea7d1 91 // var=difSum/9;
christodoulos 0:958e045ea7d1 92 // sigma=sqrt(var);
christodoulos 0:958e045ea7d1 93 //
christodoulos 0:958e045ea7d1 94 // printf("Standard dev: %f\n", sigma);
christodoulos 0:958e045ea7d1 95 //
christodoulos 0:958e045ea7d1 96 // if(sigma>=0.5){ //Check against carbon plateau, if sd greater than plateau startPoint
christodoulos 0:958e045ea7d1 97 // for(int x=0;x<8;x++){
christodoulos 0:958e045ea7d1 98 // myArray[x]=myArray[x+1]; //Shift all carbon to left by 1
christodoulos 0:958e045ea7d1 99 // printf("%d ", myArray[x]);
christodoulos 0:958e045ea7d1 100 // }
christodoulos 0:958e045ea7d1 101 //
christodoulos 0:958e045ea7d1 102 // myArray[8]=carbon(); // get new carbon value in last array slot
christodoulos 0:958e045ea7d1 103 // printf("%d\n", myArray[8]);
christodoulos 0:958e045ea7d1 104 //
christodoulos 0:958e045ea7d1 105 // sum=0; //Reset variables
christodoulos 0:958e045ea7d1 106 // sqSum=0;
christodoulos 0:958e045ea7d1 107 // var=0;
christodoulos 0:958e045ea7d1 108 // sigma=0;
christodoulos 0:958e045ea7d1 109 // avg=0;
christodoulos 0:958e045ea7d1 110 // difSum=0;
christodoulos 0:958e045ea7d1 111 //
christodoulos 0:958e045ea7d1 112 // }else{
christodoulos 0:958e045ea7d1 113 // printf("TURN ON SOLENOID\n"); //Turn on second sensor
christodoulos 0:958e045ea7d1 114 // flag=true; //Terminate loop because sd is at plateau startPoint
christodoulos 0:958e045ea7d1 115 // }
christodoulos 0:958e045ea7d1 116 // }
christodoulos 0:958e045ea7d1 117
christodoulos 0:958e045ea7d1 118 }