Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
flow.h
- Committer:
- mehrnaz
- Date:
- 2019-07-25
- Revision:
- 3:3d51f8870e91
- Parent:
- 2:ef98576cd67b
- Child:
- 4:54dc2a95c130
File content as of revision 3:3d51f8870e91:
#include "mbed.h"
// First the inputs and pins are defined
AnalogIn flowIn(PA_0);
Serial co2(PC_10,PC_11);
//Serial ttl(A1,A0);
AnalogIn sensor1(PC_0);
AnalogIn sensor2(PC_1);
AnalogIn sensor3(PC_2);
AnalogIn sensor4(PC_3);
AnalogIn sensor5(PA_4);
AnalogIn sensor6(PA_5);
AnalogIn sensor7(PA_6);
AnalogIn sensor8(PA_7);
AnalogIn temp(PA_1);
///////////////////// FLOW LOOP /////////////////////////
float finalflow;
float flowVal1;
float flowVal2;
float P1;
int flag=0;
int o=0;
float bpArray[10];
float fp;float sp;
float FPressure;
float flow()
{
while(1)
{
wait(0.01);
flowVal1=3.3*flowIn; //Logic level 3.3
flowVal2 = 1.5*flowVal1; //5v
P1 =(125*flowVal2)-62.5; //Pressure
//making the value of pressure positive inside the SQRT function:
if(flag==0)
{
finalflow=0;
bpArray[o]=P1;
sp+=bpArray[o];
o=o+1;
if (o=9)
{
fp=sp/10;
flag=1;
}
}
if (flag==1)
{
FPressure=P1-fp;
finalflow=(0.24*sqrt(FPressure)); //flow in litter per min
return finalflow;
}
}
}
///////////////////// CO2 LOOP /////////////////////////
int value;
float carbon()
{
bool allow = false;
char c;
char co2_measure[5];
int count=0;
while(1)
{
c = co2.getc();
//based on the user manual PDF for the CO2 sensor, the value starts with "Z"
//and we need to extract the right number of CO2 value
if(c=='Z') {
allow = true;
}
if(allow) {
if(c>=48 && c<=57) {
co2_measure[count]=c;
count++;
}
if(count>=6) {
value = ((co2_measure[0]-'0')*100000+co2_measure[1]-'0')*10000+(co2_measure[2]-'0')*1000+(co2_measure[3]-'0')*100;
float CAR;
CAR=(float)value/10000;
count=0;
allow=false;
return CAR;
}
}
}
}
///////////////////// TEMPERATURE LOOP /////////////////////////
float t2Cel;
float getTemp()
{
while(1) {
float B = 3478; //Define thermistor constant
float rRef=10e3; // Define reference resistance
float r1=10e3; // Define thermistor resistance at 25 C
float t1=25+273; // Define thermistor initial temperature s 25C in Kelvin
float x = temp.read(); //Measure input voltage at pin A0 in bits
float v = 3.3*x; //Convert bits into voltage
float r2 = (3.3*rRef/v)-rRef; //Convert voltage into thermistor resistance
float t2 = (B*t1)/(B-t1*log(r1/r2)); //Convert thermistor resistance into temperature in Kelvin (log means natural logarithm ln)
t2Cel = t2-273; //Convert temperature from Kelvin to Celcius
return t2Cel;
// printf("Temp: %f\n", t2Cel);
}
}
///////////////////// 8-CHANNEL SENSOR LOOP /////////////////////////
float s1()
{
float sen1;
while(1){
sen1=sensor1*3.3;
return sen1;
}
}
float s2()
{
float sen2;
while(1){
sen2=sensor2*3.3;
return sen2;
}
}
float s3()
{
float sen3;
while(1){
sen3=sensor3*3.3;
return sen3;
}
}
float s4()
{
float sen4;
while(1){
sen4=sensor4*3.3;
return sen4;
}
}
float s5()
{
float sen5;
while(1){
sen5=sensor5*3.3;
return sen5;
}
}
float s6()
{
float sen6;
while(1){
sen6=sensor6*3.3;
return sen6;
}
}
float s7()
{
float sen7;
while(1){
sen7=sensor7*3.3;
return sen7;
}
}
float s8()
{
float sen8;
while(1){
sen8=sensor8*3.3;
return sen8;
}
}