Ola possuo um código para execução de um sensor de Ph e que preciso criar uma biblioteca com ele mais estou com problemas que o valor obtido quando executo a biblioteca não esta de acordo com o código em si. Acho que o erro esta em decorrer a função analogRead() mais não consegui resolver alguém poderia me ajudar?
- codigo normal
const int analogInPin = A0;
int sensorValue = 0;
unsigned long int avgValue;
float b;
float phValue1;
int buf[10],temp;
void setup() {
Serial.begin(9600);
}
void loop() {
for(int i=0;i<10;i++)
{
buf[i]=analogRead(analogInPin);
delay(10);
}
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(buf[i]>buf[j])
{
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++)
avgValue+=buf[i];
float pHVol=(float)avgValue*5.0/1024/6;
float phValue = -5.70 * pHVol + 21.34;
Serial.print("sensor = ");
phValue1=phValue + 2;
Serial.println(phValue1);
delay(2000);
}
- biblioteca Ph.cpp
#include <Ph.h>
Ph::Ph(int analPh) //chama a funcao cetada nom arquivo .h
{
this-> analogInPin = analPh; //atribui valores a variavel
//this-> constante1 = constante;
pinMode(analogInPin, OUTPUT);
}
float Ph::Ph_ec()
{
int sensorValue = 0;
unsigned long int avgValue;
float b;
float phValue1;
int buf[10];
int temp;
for(int i=0;i<10;i++)
{
buf[i]=analogRead(analogInPin);
delay(10);
}
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(buf[i]>buf[j])
{
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++)
avgValue+=buf[i];
float pHVol=(float)avgValue*5.0/1024/6;
float phValue = -5.70 * pHVol + 21.34;
phValue1=phValue + 2;
return (phValue);
}
- arquivo Ph.h
#ifndef Ph_H_INCLUDED
#define Ph_H_INCLUDED
#include <Arduino.h>
class Ph
{
public:
Ph(int analPh);
float Ph_ec();
private:
int analogInPin;
};
#endif
1.Arquivo nova arduino
#include <Ph.h>
#define analogInPin A2
float ph1;
Ph ph(analogInPin);
void setup()
{
Serial.begin(9600);
}
void loop()
{
ph1 = ph.Ph_ec();
Serial.println(ph1);
delay(2000);
}