My attitude is a little low, and it changes to much depending on pressure, is it because I am inside, or is the code wrong?
#include <Wire.h> //Allows for IC2 communication
#include <MS5xxx.h> //Allows for easy setup of altimeter
#include <math.h>
MS5xxx sensor(&Wire); //Not really sure
float rawTemp = 0; //Stores raw temp data
float pressurePascal =0; //Stores raw pressure data in pascals
float tempF = 0; //Stores temp in fahrenheit
float tempC = 0;
float tempK = 0; //Stores temp in Kelvin
float pressureInch = 0; //Stores pressure in Inches of mercury
float pressureTorr = 0; //Stores pressure in torr
float pressureMg = 0; //Stores pressure in inches mercury
float pressureLast = 0; //Stores previous pressure in Torr
//Altitude calculation variables
float altitude = 0;
float stdPressure = 101320.75;
float varA = 0.19022256;
float varB = .0065;
float varC = .5555555;
float varPressure = stdPressure;
double Variable1 = 0;
float Variable2 = 0;
double test1 = 0;
double test2 = 0;
//SETUP LOOP/////////////////////////////
void setup() {
//Begin serial communication
Serial.begin(57600);
//Connect sensor
sensor.connect();
}
//////////////////////////////////////////
//MAIN LOOP////////////////////////////////////////////////////////////
void loop() {
// Read sensor data
sensor.ReadProm();
sensor.Readout();
//Call temp and pressure functions
tempData(); //Temp
pressureData(); //Pressure
altitudeCalc(); //Altitude
//Print Data
printData();
}
//////////////////////////////////////////////////////////////////////////
//Perform temp calculations//////////
void tempData(){
rawTemp = sensor.GetTemp();
//Convert to degrees fahrenheit
tempF = (rawTemp*.01)*1.8+32;
//Convert to degrees Celcius
tempC = (tempF-32)*varC;
//convert to kelvin
tempK = tempC + 273.15;
}
//Perform pressure calculations//////////
void pressureData(){
//Store last pressure
pressureLast = pressureTorr;
//Read new data
pressurePascal = sensor.GetPres();
//Convert pressure into torr
pressureTorr = pressurePascal*0.00750061683;
//Convert pressure into inches mercury;
pressureMg = pressurePascal*0.000295299830714;
if(pressureLast < pressureTorr)
{
Serial.println("Altitute is increasing");
}
else
{
Serial.println("Altitute is decreasing");
}
}
//Altitude calculations
void altitudeCalc(){
test1 = (stdPressure/pressurePascal);
test2 = pow(test1,varA);
Variable1 = abs(test2 - 1);
Variable2 = Variable1*tempK;
altitude = Variable2/.0065;
}