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?
Tags:
As respostas para este tópico estão encerradas.
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);
}
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por