hold the same code in the base class

This commit is contained in:
CAHEK7 2016-08-26 14:05:15 +03:00
parent a0b4fa0752
commit c19b668a63
18 changed files with 30 additions and 72 deletions

View File

@ -66,6 +66,11 @@ float BaseMQ::readRs() {
return rs;
}
int readScaled(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
}
float BaseMQ::getRo() {
return _ro;
}

View File

@ -31,6 +31,7 @@ protected:
uint8_t _pin;
uint8_t _pinHeater;
float readRs();
int readScaled(float a, float b);
float calculateResistance(int rawAdc);
virtual float getRoInCleanAir() const = 0;
virtual int getRL() const = 0;

13
MQ2.cpp
View File

@ -9,22 +9,17 @@ MQ2::MQ2(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ2::readLPG() {
return readPpm(-0.45, 2.95);
return readScaled(-0.45, 2.95);
}
unsigned long MQ2::readMethane() {
return readPpm(-0.38, 3.21);
return readScaled(-0.38, 3.21);
}
unsigned long MQ2::readSmoke() {
return readPpm(-0.42, 3.54);
return readScaled(-0.42, 3.54);
}
unsigned long MQ2::readHydrogen() {
return readPpm(-0.48, 3.32);
}
int MQ2::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.48, 3.32);
}

1
MQ2.h
View File

@ -12,7 +12,6 @@ public:
unsigned long readSmoke();
unsigned long readHydrogen();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 5; }
// коефициент чистого воздуха

View File

@ -9,14 +9,9 @@ MQ3::MQ3(uint8_t pin, uint8_t pinHeater)
}
float MQ3::readAlcoholMgL() {
return readMgL(-0.66, -0.62);
return readScaled(-0.66, -0.62);
}
float MQ3::readAlcoholPpm() {
return readMgL(-0.66, -0.62)*2.2;
}
float MQ3::readMgL(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.66, -0.62)*2.2;
}

1
MQ3.h
View File

@ -10,7 +10,6 @@ public:
float readAlcoholMgL();
float readAlcoholPpm();
private:
float readMgL(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 200; }
// коефициент чистого воздуха

View File

@ -9,10 +9,5 @@ MQ4::MQ4(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ4::readMethane() {
return readPpm(-0.36, 2.54);
}
int MQ4::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.36, 2.54);
}

1
MQ4.h
View File

@ -9,7 +9,6 @@ public:
MQ4(uint8_t pin, uint8_t pinHeater);
unsigned long readMethane();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 20; }
// коефициент чистого воздуха

View File

@ -9,14 +9,9 @@ MQ5::MQ5(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ5::readLPG() {
return readPpm(-0.39, 1.73);
return readScaled(-0.39, 1.73);
}
unsigned long MQ5::readMethane() {
return readPpm(-0.38, 1.97);
}
int MQ5::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.38, 1.97);
}

1
MQ5.h
View File

@ -10,7 +10,6 @@ public:
unsigned long readLPG();
unsigned long readMethane();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 20; }
// коефициент чистого воздуха

View File

@ -9,10 +9,5 @@ MQ6::MQ6(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ6::readLPG() {
return readPpm(-0.42, 2.91);
}
int MQ6::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.42, 2.91);
}

1
MQ6.h
View File

@ -9,7 +9,6 @@ public:
MQ6(uint8_t pin, uint8_t pinHeater);
unsigned long readLPG();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 20; }
// коефициент чистого воздуха

View File

@ -9,10 +9,5 @@ MQ7::MQ7(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ7::readCarbonMonoxide() {
return readPpm(-0.77, 3.38);
}
int MQ7::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.77, 3.38);
}

1
MQ7.h
View File

@ -9,7 +9,6 @@ public:
MQ7(uint8_t pin, uint8_t pinHeater);
unsigned long readCarbonMonoxide();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 10; }
// коефициент чистого воздуха

View File

@ -9,10 +9,5 @@ MQ8::MQ8(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ8::readHydrogen() {
return readPpm(-1.52, 10.49);
}
int MQ8::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-1.52, 10.49);
}

1
MQ8.h
View File

@ -9,7 +9,6 @@ public:
MQ8(uint8_t pin, uint8_t pinHeater);
unsigned long readHydrogen();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 10; }
// коефициент чистого воздуха

11
MQ9.cpp
View File

@ -9,18 +9,13 @@ MQ9::MQ9(uint8_t pin, uint8_t pinHeater)
}
unsigned long MQ9::readLPG() {
return readPpm(-0.48, 3.33);
return readScaled(-0.48, 3.33);
}
unsigned long MQ9::readMethane() {
return readPpm(-0.38, 3.21);
return readScaled(-0.38, 3.21);
}
unsigned long MQ9::readCarbonMonoxide() {
return readPpm(-0.48, 3.10);
}
int MQ9::readPpm(float a, float b) {
float ratio = readRs()/_ro;
return pow(M_E, (log(ratio)-b)/a);
return readScaled(-0.48, 3.10);
}

1
MQ9.h
View File

@ -11,7 +11,6 @@ public:
unsigned long readMethane();
unsigned long readCarbonMonoxide();
private:
int readPpm(float a, float b);
// Резистор установленный на плату (кОм)
virtual int getRL() const { return 10; }
// коефициент чистого воздуха