Hi i made a library for pressure sensor and all calculations are made in cpp file , and so i want to print the result on serial or lcd but i can't accsess the result in cpp file.
Here is ardu code :
#include <MS5803.h>
#include <Wire.h>
#include <LiquidCrystal.h>
MS5803 sensor = MS5803();
LiquidCrystal lcd(12,11,5,4,3,2);
void setup() {
Wire.begin();
lcd.begin(16, 2);
sensor.resetsensor();
sensor.readcalib();
delay(10);
}
void loop() {
sensor.readT();
delay(100);
sensor.calcT();
delay(30);
lcd.setCursor(0, 0);
lcd.println(Temperature); // I want to print that value on LCD
delay(1000);
}
And here is my MS5803.h :
#ifndef MS5803_H
#define MS5803_H
#include "Arduino.h"
class MS5803
{
public:
MS5803();
void resetsensor();
void readcalib();
void readP();
void readT();
void calcP();
void calcT();
private:
};
#endif
and MS5803.cpp :
#include "MS5803.h"
#include "Arduino.h"
#include <Wire.h>
#define Reset 0x1E
#define D1_256 0x40
#define D1_512 0x42
#define D1_1024 0x44
#define D1_2048 0x46
#define D1_4096 0x48
#define D2_256 0x50
#define D2_512 0x52
#define D2_1024 0x54
#define D2_2048 0x56
#define D2_4096 0x58
#define AdcRead 0x00
#define PromBaseAddress 0xA0
#define Address 0x77
unsigned int CalConstant[8];
long AdcTemperature, AdcPressure = 0; //RAW ADC data
float Temperature,Pressure,TempDifference, Offset, Sensitivity = 0;
float T2, Off2, Sens2 = 0;
byte ByteHigh, ByteMiddle, ByteLow; // Variables for I2C reads
MS5803::MS5803() {
}
void MS5803::resetsensor() {
Wire.beginTransmission(Address);
Wire.write(Reset);
delay(10);
Wire.endTransmission();
}
void MS5803::readcalib() {
for (byte i = 0; i < 8; i++)
{
Wire.beginTransmission(Address);
Wire.write(PromBaseAddress + (2*i));
Wire.requestFrom(Address, 2);
while(Wire.available()){
ByteHigh = Wire.read();
ByteLow = Wire.read();
}
CalConstant[i] = (((unsigned int)ByteHigh << 8) + ByteLow);
}
}
void MS5803::readP() {
Wire.beginTransmission(Address);
Wire.write(D1_1024);
delay(10);
Wire.write(AdcRead);
Wire.requestFrom(Address, 3);
while(Wire.available())
{
ByteHigh = Wire.read();
ByteMiddle = Wire.read();
ByteLow = Wire.read();
}
AdcPressure = ((long)ByteHigh << 16) + ((long)ByteMiddle << 8) + (long)ByteLow;
}
void MS5803::readT() {
Wire.beginTransmission(Address);
Wire.write(D2_512);
delay(10);
Wire.write(AdcRead);
Wire.requestFrom(Address, 3);
while(Wire.available())
{
ByteHigh = Wire.read();
ByteMiddle = Wire.read();
ByteLow = Wire.read();
}
AdcTemperature = ((long)ByteHigh << 16) + ((long)ByteMiddle << 8) + (long)ByteLow;
}
void MS5803::calcT() {
TempDifference = (float)(AdcTemperature - ((long)CalConstant[5] << 8));
Temperature = (TempDifference * (float)CalConstant[6])/ pow(2, 23);
Temperature = Temperature + 2000;
if (Temperature < 2000.0)
{
T2 = 3 * pow(TempDifference, 2) / pow(2, 33);
Off2 = 1.5 * pow((Temperature - 2000.0), 2);
Sens2 = 0.625 * pow((Temperature - 2000.0), 2);
}
else
{
T2 = (TempDifference * TempDifference) * 7 / pow(2, 37);
Off2 = 0.0625 * pow((Temperature - 2000.0), 2);
Sens2 = 0.0;
}
Temperature = Temperature / 100;
}
void MS5803::calcP() {
Offset = (float)CalConstant[2] * pow(2,16);
Offset = Offset + ((float)CalConstant[4] * TempDifference / pow(2, 7));
Sensitivity = (float)CalConstant[1] * pow(2, 15);
Sensitivity = Sensitivity + ((float)CalConstant[3] * TempDifference / pow(2, 8));
Offset = Offset - Off2;
Sensitivity = Sensitivity - Sens2;
Pressure = (float)AdcPressure * Sensitivity / pow(2, 21);
Pressure = Pressure - Offset;
Pressure = Pressure / pow(2, 15);
Pressure = Pressure / 100; // Set output to bars;
}
How i can access Pressure and Temperature result from arduino sketch ? When i try to copmpile it says that Temperature was not declared.