#include <Wire.h>
// MS5803_05BA I2C address is 0x77(119)
#define Addr 0x77
unsigned long Coff[6], Ti = 0, offi = 0, sensi = 0;
unsigned int data[3];
void setup()
{
// Initialise I2C communication as MASTER
Wire.begin();
// Initialise Serial Communication, set baud rate = 9600
Serial.begin(9600);
// Read cofficients values stored in EPROM of the device
for(int i = 0; i < 6; i++)
{
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select data register
Wire.write(0xA2 + (2 * i));
// Stop I2C Transmission
Wire.endTransmission();
// Request 2 bytes of data
Wire.requestFrom(Addr, 2);
// Read 2 bytes of data
// Coff msb, Coff lsb
if(Wire.available() == 2)
{
data[0] = Wire.read();
data[1] = Wire.read();
}
// Convert the data
Coff = ((data[0] * 256) + data[1]);
-
}*
-
delay(300);*
}
void loop()
{ -
// Start I2C Transmission*
-
Wire.beginTransmission(Addr);*
-
// Send reset command*
-
Wire.write(0x1E);*
-
// Stop I2C Transmission*
-
Wire.endTransmission();*
-
delay(300);*
-
// Start I2C Transmission*
-
Wire.beginTransmission(Addr);*
-
// Refresh pressure with the OSR = 256*
-
Wire.write(0x40);*
-
// Stop I2C Transmission*
-
Wire.endTransmission();*
-
delay(500);*
-
// Start I2C Transmission*
-
Wire.beginTransmission(Addr);*
-
// Select data register*
-
Wire.write(0x00);*
-
// Stop I2C Transmission*
-
Wire.endTransmission();*
-
// Request 3 bytes of data*
-
Wire.requestFrom(Addr, 3);*
-
// Read 3 bytes of data*
-
// ptemp_msb1, ptemp_msb, ptemp_lsb*
-
if(Wire.available())*
-
{*
-
data[0] = Wire.read();*
-
data[1] = Wire.read();*
-
data[2] = Wire.read();*
-
} *
-
// Convert the data*
_ unsigned long ptemp = ((data[0] * 65536.0) + (data[1] * 256.0) + data[2]);_ -
// Start I2C Transmission*
-
Wire.beginTransmission(Addr);*
-
// Refresh temperature with the OSR = 256*
-
Wire.write(0x50);*
-
// Stop I2C Transmission*
-
Wire.endTransmission();*
-
delay(500);*
-
// Start I2C Transmission*
-
Wire.beginTransmission(Addr);*
-
// Select data register*
-
Wire.write(0x00);*
-
// Stop I2C Transmission*
-
Wire.endTransmission();*
-
// Request 3 bytes of data*
-
Wire.requestFrom(Addr, 3);*
-
// Read 3 bytes of data*
-
// temp_msb1, temp_msb, temp_lsb*
-
if(Wire.available())*
-
{*
-
data[0] = Wire.read();*
-
data[1] = Wire.read();*
-
data[2] = Wire.read();*
-
}*
-
// Convert the data*
_ unsigned long temp = ((data[0] * 65536.0) + (data[1] * 256.0) + data[2]);_ -
// Pressure and Temperature Calculations*
-
// 1st order temperature and pressure compensation*
-
// Difference between actual and reference temperature*
_ long dT = temp - ((Coff[4] * 256));_
_ temp = 2000 + (dT * (Coff[5] / pow(2, 23)));_ -
// Offset and Sensitivity calculation*
_ unsigned long long off = Coff[1] * 262144 + (Coff[3] * dT) / 32;_
_ unsigned long long sens = Coff[0] * 131072 + (Coff[2] * dT) / 128;_ -
// 2nd order temperature and pressure compensation*
-
if(temp < 2000)*
-
{*
_ Ti = 3 * (dT * dT) / (pow(2,33));_
_ offi = 3 * ((pow((temp - 2000), 2))) / 8;_
_ sensi = 7 * (pow((temp - 2000), 2)) / 8;_ -
if(temp < - 1500)*
-
{*
_ sensi = sensi + 3 * ((pow((temp + 1500), 2)));_ -
}*
-
}*
-
else if(temp >= 2000)*
-
{*
-
Ti = 0;*
-
offi = 0;*
-
sensi = 0;*
-
}*
-
// Adjust temp, off, sens based on 2nd order compensation *
-
temp -= Ti;*
-
off -= offi;*
-
sens -= sensi;*
-
// Convert the final data*
_ ptemp = (((ptemp * sens) / 2097152) - off);_ -
ptemp /= 32768.0;*
-
float pressure = ptemp / 100.0;*
-
float ctemp = temp / 100.0;*
_ float fTemp = ctemp * 1.8 + 32.0;_ -
// Output data to serial monitor*
-
Serial.print("Temperature in Celsius : ");*
-
Serial.print(ctemp);*
-
Serial.println(" C");*
-
Serial.print("Temperature in Fahrenheit : ");*
-
Serial.print(fTemp);*
-
Serial.println(" F");*
-
Serial.print("Pressure : ");*
-
Serial.print(pressure);*
-
Serial.println(" mbar");*
-
delay(500);*
}
when i upload this code to arduino uno i am not getting any output kindly suggest me a solution... i have attached my circuit diagram and also the output terminal window for reference...

