Boa tarde, então eu vou comprar um sensor de fluxo de água para realizar o monitoramento do consumo d'água em uma residência, eu já até estudei um tutorial aqui no site. Meu problema é para testar o programa, estou usando um potenciômetro de 10K e o arduino converte este valor para um número de 10 bits, 0 a 1023, até ai tudo bem, mas eu quero retornar ao valor de 0 a 10K, já tentei de tudo aqui, mas quando abro o monitor serial aparece o número 28 mil e alguma coisa com 0.00 em baixo e nunca muda, mesmo quando vario o Pot. Alguém poderia me informar como eu retorno ao valor para trabalhar a matemática do projeto?

Exibições: 805

As respostas para este tópico estão encerradas.

Respostas a este tópico

podeira postar o codigo que esta usando ?

Na verdade eu estava só tentando simular um sensor de fluxo de água:

float Soma=0;
float LerSensor=0;
float pinAnalog=0;
float Litros=0;
int i=0;

void setup()
{
pinMode(pinAnalog, INPUT);
Serial.begin(9600);

}

void loop()

{
LerSensor=analogRead(pinAnalog);
Litros=10000/LerSensor;

i++;

if (i<60)

{
Soma==Litros+Soma;


}


if (i=60)

{
Serial.println('Consumo por segundo:');
Serial.println(Soma);
}

delay(1000);


}

Oi Eduardo, bom dia.

Revendo seu code, identiquei que em 2 lugares voce escreveu assim:  X == Y,

este formato é uma comparação de X com Y. 

Para fazer uma variavel igual à outra usa-se; X =Y.

Depois voce pode usar a função "map()", para ter o valor de 0 até 10.000 (10k).

Faça assim :  Litros = map(LerSensor, 0, 1023, 0 ,10000);

Não tenho como testar aqui, para ver se existem erros de sintax.

Modifique as linhas e acredito que voce verá os valores litos e calculados na serial.

Rui

Obrigado, vou testar aqui.

Amigo, alterei o código e pode-se dizer que deu parcialmente certo, entretanto o monitor serial só registrar o valor do potenciômetro, quando o monitor é aberto, depois quando varia a resistência o valor não muda.

float Soma=0;
float LerSensor=0;
float pinAnalog=0;
float Litros=0;
int i=0;

void setup()
{
pinMode(pinAnalog, INPUT);
Serial.begin(9600);

}

void loop()

{
LerSensor=analogRead(pinAnalog);
Litros=map(LerSensor,0,1023,0,10000);

if(i<60)

{
Serial.println(Litros);
Serial.println(i);
Soma=Soma+Litros;

}



if (i=60)

{
Serial.println('Consumo:');
Serial.println(Soma);
}

i++;

delay(1000);


}

 

Anexos

Olá,

Tente mudar a linha:

float pinAnalog=0;

para:

const int pinAnalog=0;

e a linha:

pinMode(pinAnalog, INPUT);

para:

// pinMode(pinAnalog, INPUT);

A função map não trabalha com variáveis do tipo float, veja o link abaixo: 

http://www.arduino.cc/en/Reference/Map

Então você deve mudar as linhas:

float Soma=0;
float LerSensor=0;
float Litros=0;

para:

int Soma=0;
int LerSensor=0;
int Litros=0;

Abraço.

fiz como você falou, mas continua do mesmo jeito.

Não sei se entendi bem, mas veja o vídeo que fiz modificando baseado no seu código, e arrumando algumas coisas, é isso o que pretende?

https://www.youtube.com/watch?v=n2qx55hAAFs&feature=youtu.be

Abs.

Exatamente isso.

Código:

int Soma = 0;
int LerSensor = 0;
int Litros = 0;
int pinAnalog = 0;
int i = 0;

 void setup()
 {
 pinMode(pinAnalog, INPUT);
 Serial.begin(9600);

 }

 void loop()

 {
 LerSensor = analogRead(pinAnalog);
 Litros = map(LerSensor,0,1023,0,10000);

 if(i<60)

 {
 Serial.println(Litros);
 Serial.println(i);
 Soma = Soma+Litros;

 }

 if (i==60)

 {
 Serial.println("Consumo:");
 Serial.println("Soma");
 }

 i++;

 delay(1000);
 }

POTE 1K ENTRADA A0.

Abs.

Obrigado.

De nada,

Por favor, se considerar que seu tópico esta concluído, edite, e coloque antes do titulo atual, a palavra RESOLVIDO, desta forma passara a ser uma fonte de consulta para outros.

Abs. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço