Por favor, alguém poderia me ajudar.
O programa abaixo lê dados do sensor na porta A0 e envia para serial. só está enviando dados quando a leitura no sensor é zero. Na verdade eu queria que enviasse dados quando for acima de zero. quando for zero, fica parado.
************************************************************************************************
int PinAnalogA0 = 0;
float valAnalog=0; // Coloca o Pino A0 a 0
float temp = 0;
int samples[4]; // variavel para melhor precisão
float maxi=0, mini=1000000;
void setup()
{
Serial.begin(9600);
}
void loop ()
{
valAnalog = analogRead(PinAnalogA0);
temp = (valAnalog * 48.0) /512;
if(temp > maxi)
{
maxi = temp;
} // regista temperatura maxima
if(temp < mini)
{
mini = temp;
} // regista temperatura minima
while(temp == 0)
{
if (Serial.available() > 0)
{
temp= Serial.parseFloat();
}
Serial.print(" DB read= " );
Serial.print(temp);
Serial.print(" || DB min= " );
Serial.print(mini);
Serial.print(" || DB max max= " );
Serial.print(maxi);
Serial.println("");
delay(200);
}
}
Tags:
o erro deve estar aqui:
while(temp == 0)
{
if (Serial.available() > 0)
{
temp= Serial.parseFloat();
}
o que deveria ser:
while(temp >= 0)
{
if (Serial.available() > 0)
{
temp= Serial.parseFloat();
}
A diferença:
while(temp == 0) para while(temp >= 0)
Tenta isso parça !
Qualquer coisa, estamos ai !
na verdade seria while(temp > 0) , se não ele executaria mesmo quando tempo fosse zero.
verdade !
ele não quer que execute quando 0.
Se eu colocar " while(temp > 0) " fica parado quando está em zero, mas qdo eu coloco acima de zero, começa a fazer a leitura e não para mais, mesmo voltando a zero.
Bom dia, João. Na verdade eu quero que o projeto funcione da seguinte forma:
O sensor irá ler o ruído de um motor. O arduino capta esse sinal e envia na serial pro PC.
O PC tem um programa que recebe esses valores e salva em arquivo texto, na qual eu chamerei esses valores de decibeis.
Então, quando eu tirar o motor da bancada de testes, o programa deve parar de ler até que eu coloque o próximo motor para ser lido.
Por isso eu preciso da serial, pra ficar gravado os decibeis lido de cada motor verificado.
tente isto:
boolean bDo = false;
if(temp>0) //testa na primeira vez, como ponto de partida
{
bDo = true;
}
while(bDo)
{
if(temp>0)
{
if (Serial.available() > 0)
{
temp= Serial.parseFloat();
}
}
else
{
bDo = false;
}
}
Eu não testei, mas tente isto.
Olá Guihgo,
Eu adicionei a rotina que vc postou e funcionou perfeitamente. Agora, qdo está em zero ele para a leitura. Acima de zero, volta a fazer a leitura.
Muito obrigado, valeu mesmo!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por