Sem descrição

Exibições: 746

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

Respostas a este tópico

Olá,

Você pode tentar armazenar a distancia ao invés de int em um long. Geralmente para armazenar esses dados como distancia usa-se o long.

Hum, em vez de Ultrasonic ultrasonic(12,13); tente Ultrasonic ultrasonic(trigPin,echoPin); ou não usar os termos definidos, somente as portas mesmo 12 e 13. Infelizmente, não conheço a biblioteca, uso o HC_SR04 de outro jeito.

me ajudem

tente tirar essa linha >>>

Ultrasonic ultrasonic(12,13); //Funcao do Ultrasonic

e ao invés de usar uma int distancia..... use isso>>

long duration = pulseIn(echoPin,HIGH);  

 long distancia = duration /29 / 2 ; 

depois vc executa o serial print...  tente ve se resolve,, não uso arduino

abraço

Eu usei este código para testar meu sensor, e funcionou 100%, mas acredito que o problema no seu caso, seja porque você não baixou a Library do Ultrasom, estou enviando em anexo, descompacta a pasta dentro de  Meus Documentos\Arduino\Library\

Abaixo o código que usei para teste:

#include "Ultrasonic.h"
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
//iniciando a função e passando os pinos
Ultrasonic ultrasonic(12,13);

void setup()
{
Serial.begin(9600); //inicia a porta serial
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
}

void loop()
{
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
// função Ranging, faz a conversão do tempo de
//resposta do echo em centimetros, e armazena
//na variavel distancia
int distancia = (ultrasonic.Ranging(CM));

Serial.print("Distancia em CM: ");
Serial.println(distancia);
delay(500); //espera 1 segundo para fazer a leitura novamente
}

Anexos

uma função assim não resolveria seu problema?

int Medir(){
digitalWrite(Trig,LOW);
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
int Tempo = pulseIn(Echo,HIGH);
return Tempo/29/2;
}

vou tentar

meu problema e adicionar os 5 sensores

Cara, tem que testar! 

Sei que da pra refinar este código, mas acho que atende o que vc precisa, e não está tão difícil de entender.

Note que o pino do Trigger é o mesmo para todos os sensores, e o Echo varia de 23 a 27

Faz um teste e me diz como ficou:

#define Trig 22// Trigger dos sensores
#define Echo1 23 //Echo Sensor 1
#define Echo2 24 //Echo Sensor 2
#define Echo3 25 //Echo Sensor 3
#define Echo4 26 //Echo Sensor 4
#define Echo5 27 //Echo Sensor 5
#define Buzz 13//Pino do Buzzer
int Dist_min = 50;// Distância mínima para acionar o Buzzer

void setup(){
Serial.begin(9600); //aciona a porta serial
pinMode(Trig, OUTPUT);
pinMode(Echo1,INPUT);
pinMode(Echo2,INPUT);
pinMode(Echo3,INPUT);
pinMode(Echo4,INPUT);
pinMode(Echo5,INPUT);
pinMode(Buzz,OUTPUT);
}
bool Medir(int Sensor){ // Mede a distância de cada sensor,
digitalWrite(Trig,LOW);// e se alguma for menor que a mínima
delayMicroseconds(2); //retorna verdadeiro
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
int Tempo = pulseIn(Sensor,HIGH);
int Dist = Tempo/29/2;
if (Dist <= Dist_min) {
return true;
}
else{
return false;
}
}
void loop(){
for (int i=23;i<=27;i++){
if (Medir(i)){
digitalWrite(Buzz, HIGH);
delay(300);
digitalWrite(Buzz,LOW);
break;
}
}
}

Espero que dê certo

para imprimir a distância na serial, a função medir fica assim:

bool Medir(int Sensor){ // Mede a distância de cada sensor,
digitalWrite(Trig,LOW);// e se alguma for menor que a mínima
delayMicroseconds(2); //retorna verdadeiro
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
int Tempo = pulseIn(Sensor,HIGH);
int Dist = Tempo/29/2;

Serial.print("Distancia em CM: ");
Serial.println(Dist);
if (Dist <= Dist_min) {
return true;
}
else{
return false;
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço