Quero conseguir fazer uma medição com dois sensores ultrassônicos (hc-sr04) sendo que preciso usar o transmissor de um sensor para enviar o sinal e fazer a leitura com o receptor do segundo sensor e vice e versa.

Com esse código só conseguimos fazer a primeira medição com o sensor 1, a partir da segunda medição não recebemos mais nenhum dado.

Segue o código

//INSTANCIAÇÃO DE PINOS DO SENSOR#1
#define echo1 7
#define trig1 6

//INSTANCIAÇÃO DE PINOS DO SENSOR#2
#define echo2 8
#define trig2 9

void setup() {
pinMode(trig1, OUTPUT);
pinMode(trig2, OUTPUT);

pinMode(echo1, INPUT);
pinMode (echo2, INPUT);

Serial.begin(9600);
Serial.println("RESET");

}

void loop() {
digitalWrite(trig1, LOW);
delayMicroseconds(2);

digitalWrite(trig1, HIGH);
delayMicroseconds(10);

digitalWrite(trig1, LOW);

unsigned long echoLength1 = pulseIn(echo2, HIGH);
int distance1 = echoLength1 / 58;


Serial.print("Reading sensor1: ");
Serial.print(distance1);
Serial.println("cm");

delay(10);

digitalWrite(trig2, LOW);
delayMicroseconds(2);

digitalWrite(trig2, HIGH);
delayMicroseconds(10);

digitalWrite(trig2, LOW);

unsigned long echoLength2 = pulseIn(echo1, HIGH);
int distance2 = echoLength2 / 58;


Serial.print("Reading sensor2: ");
Serial.print(distance2);
Serial.println("cm");
}

Print do resultado obtido na serial:

Exibições: 529

Responder esta

Respostas a este tópico

Oi LM, bom dia.

Acho que as variaveis estão invertidas,

esta linha não deveria ser echo1  --->  unsigned long echoLength1 = pulseIn(echo2, HIGH);

e esta echo2  --->   unsigned long echoLength2 = pulseIn(echo1, HIGH);   ?

Rui

LM. para que eu entenda melhor:

Você quer ler o pulso emitido por um  emissor, usando o outro sensor?

Rui

Olá Rui Viana, boa noite. 

É isso mesmo, que quero enviar o sinal ultrassônico com o sensor 1 e fazer a leitura no segundo sensor.

Lyang provavelmente você vai ter que usar 2 pinos extras no Arduino para matar a alimentação dos CIs max 232 dos hc-sr04...  que tipo de medidor você esta fazendo?

Olá Alexandre, acho que tenho que fazer isso mesmo, por que pelo que eu entendi do funcionamento desse módulo, o max 232 só fica aguardando receber algo no eco se ele tiver enviado. Que ligação eu devo fazer para cortar a alimentação desse CI? Estou fazendo um medidor de fluxo d'água.

 Acho que o melhor lugar para você mexer é próximo a base do Q2 em cima do r20! O max232 funciona como um elevador de tensão! Você corta a alimentação dele o circuito vai ficar mudo! Você tem que mandar o trigger para todos e deixa somente um deles com o max232 alimentado! Q2 é o transistor próximo ao ao max232 CI montado no sentido diferente! R2 esta ligado a base do Q2 e ao microcontrolador!

Água??? Vai ser pauleira! Pensei que seria direção e velocidade do vento!

Anexos

Valeu mesmo pela idéia, vou estudar um pouco aqui pra fazer uns testes

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço