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:
Tags:
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!
Valeu mesmo pela idéia, vou estudar um pouco aqui pra fazer uns testes
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por