Arduino biblioteca


#1

Ola estou criando uma biblioteca para Arduíno mais estou com alguns problemas o código esta rodando mais o resultado obtido não esta certo alguem poderia me ajudar.

codigo .cpp

#include <tc_condut.h>
////////////////////////////////variaveis//////////////////////////////////////////////////////////////////////
const float ArduinoVoltage = 5.00; // CHANGE THIS FOR 3.3v Arduinos
const float ArduinoResolution = ArduinoVoltage / 1024;
const float resistorValue = 10000.0;

	int analogValue=0;
	int oldAnalogValue=1000;
	float returnVoltage=0.0;
	float resistance=0.0;
	double Siemens;
	float TDS=0.0;
	int threshold =3;
	int cont=0;
	//float tc;

///////////////////////////////////////////////////
tc_condut::tc_condut (int intputPin, int outputPin){ //chama a funcao do aquivo .h
this-> entrada= intputPin;
this-> saida= outputPin;

pinMode(saida, OUTPUT);
pinMode(entrada, INPUT);

while(cont > 30)
{

while(((oldAnalogValue-analogValue)>threshold) || (oldAnalogValue<50))
{
oldAnalogValue = analogValue;
digitalWrite( entrada, HIGH );//aciona o pino
delay(10); // allow ringing to stop
analogValue = analogRead( entrada );
digitalWrite( saida, LOW );//desliga o pino
}
////// Calculo para a resolucao da condutividade///////////////////////////////
returnVoltage = analogValue * ArduinoResolution;
resistance = ((5.00 * resistorValue) / returnVoltage) - resistorValue;
Siemens = 1.0/(resistance/1000000);
TDS = 500 * (Siemens/1000);
cont = cont ++;
}
}

float tc_condut::tc(){///funcao chamada para resceber a variavel TDS que contem o valor obtido

 float tc= (TDS);

}

codigo .h

#ifndef tc_condut_H_INCLUDED
#define tc_condut_H_INCLUDED

#include <Arduino.h>
class tc_condut{
public:
tc_condut(int intputPin, int outputPin);
float tc();
private:
int entrada;
int saida;

};

#endif

corpo arduino

#include <tc_condut.h>

#define saida A0
#define entrada A5

float condut;

tc_condut tc_condut1(saida,entrada);

void setup() {
Serial.begin(9600);
}

void loop() {
condut= tc_condut1.tc();/////rescebe o valor da variavel TDS
Serial.println(condut);///imprime o resultado
delay(5000);

}


#2

Amigo a boa prática de códificação por mais simples ou obvio que seja seu código sempre deve-se comentár o código assim fica mais fácil te ajudar.


#3

ola comentei algumas partes. O problema do código seria que quando chamo a variável TDS pela função TC o mesmo aparece com valor 0.0


#4

Ora isso é simples, veja bem vc já declarou essa variavel com esse valor de 0.0:

float TDS=0.0; // variavel do tipo float com valor de 0.0 declarado.

Portanto vai sair com esse valor que vc declarou…


#5

Como variavél global o ideal seria declará-la da seguinte forma:

float TDS; // variavel do tipo float sem valor definido.

Se for utiliza-la em outros locais do programa declare ela como variavel local Ok!