Pessoal, poderiam me ajudar, estou com um projeto aqui e estou com problemas em uma das partes do código
Aqui está o código:
#include <NewPing.h>
#define TRIGGER_PIN 5
#define ECHO_PIN 6
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
Serial.println("Lendo... ");
}
void loop() {
delay(5000); // Espera 5 seg entre os pings
unsigned int u = sonar.ping(); // Envia o ping.
Serial.print("Ping: ");
Serial.print(sonar.convert_cm(u)); //Converte (se =0 esta fora do alcance ou nao recebeu o echo)
Serial.println("cm");
if (u>20) {
Serial.println("sim");
}else{
Serial.println("nao");
}
}
Quando subo para o arduino e o sensor, ele da o valor sim para qualquer valor diferente de 0 (e quando a mensagem "nao" aparece).
A pergunta é a seguinte: Eu estaria fazendo o if do jeito errado? Pois o que eu quero é que o sensor pegue a distancia e se ela for maior que 20 cm mostre uma mensagem senão mostra outra.
Tags:
As respostas para este tópico estão encerradas.
Caio
sonar.ping(); - Send a ping, returns the echo time in microseconds or 0 (zero) if no ping echo within set distance limit.
Esse função retorna o tempo de resposta do echo.
Creio que você deva usar essa função sonar.convert_cm(u) dentro do if .
if (sonar.convert_cm(u)>20) {
ou use sonar.ping_cm() para receber a distancia em cm.
unsigned int u = sonar.ping_cm(); // Envia o ping.
Flavio era exatamente isso, pois do jeito que o if estava ele pegava o valor "Original" e não o "convertido", adicionando a conversão no parâmetro fez ele funcionar do jeito que eu esperava, obrigado pela sua ajuda.
Oi CAF, boa noite.
Não identifiquei problemas no seu if, mas não tenho certeza do valor que voce está testando nele.
Pra isto acrescentei uma linha no seu code; : " Serial.println("u " + String(u)); // Qual valores imprime aqui? "
com o objetivo de identificar realmente qual o valor testado.
Rode este code e depois me diga que valores imprimiu.
'Rui
Rui obrigado pela sua ajuda, eu fiz isto e já resolvi o problema, basicamente o valor que estava sendo usado no parâmetro não estava sendo convertido para cm, ou seja, bastava colocar a conversão dentro do IF. Como tinha me pedido aqui está o resultado com a sua linha de code.
Bom dia,
Estou postando aqui apenas para seguir este tópico.
Abs.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por