Olá, boa noite pessoal.
Estou iniciando projetos na área de automação e controle, bem como também na área de eletrônicos.
O projeto que estou fazendo utilizo 3 sensores ultrassônicos HC-SR04 para calcular distâncias variadas (cada sensor irão informar distâncias diferentes). Fiz um código, porém quando ativo o monitor serial, as distâncias de cada sensor sempre permanece em zero. Qual seria a possível solução para esse problema?
Abaixo está o código que fiz, com seus devidos comentários.
Agradeço desde já!!!
int Sensor1=2; //PINO DIGITAL 2 DO ARDUÍNO UNO - TRIG DO SENSOR ULTRA 1
int Sensor2=7; //PINO DIGITAL 7 DO ARDUÍNO UNO - TRIG DO SENSOR ULTRA 2
int Sensor3=12; //PINO DIGITAL 12 DO ARDUÍNO UNO -TRIG DO SENSOR ULTRA 3
int Sensor11=4; //PINO DIGITAL 4 DO ARDUÍNO UNO - ECHO DO SENSOR ULTRA 1
int Sensor22=8; //PINO DIGITAL 8 DO ARDUÍNO UNO - ECHO DO SENSOR ULTRA 2
int Sensor33=13;//PINO DIGITAL 13 DO ARDUÍNO UNO -ECHO DO SENSOR ULTRA 3
float tempo1; //VARIÁVEL QUE GUARDA O TEMPO DA EMISSÃO E REFLEXÃO DA ONDA DO SENSOR 1
float tempo2; //VARIÁVEL QUE GUARDA O TEMPO DA EMISSÃO E REFLEXÃO DA ONDA DO SENSOR 2
float tempo3; //VARIÁVEL QUE GUARDA O TEMPO DA EMISSÃO E REFLEXÃO DA ONDA DO SENSOR 3
float distancia1; //VARIÁVEL QUE GUARDA A DISTÂNCIA CALCULADA DO SENSOR 1
float distancia2; //VARIÁVEL QUE GUARDA A DISTÂNCIA CALCULADA DO SENSOR 2
float distancia3; //VARIÁVEL QUE GUARDA A DISTÂNCIA CALCULADA DO SENSOR 3
void setup() {
digitalWrite(Sensor1, OUTPUT); //HABILITA O SENSOR1 (TRIG 1) COMO SAÍDA
digitalWrite(Sensor2, OUTPUT); //HABILITA O SENSOR2 (TRIG 2) COMO SAÍDA
digitalWrite(Sensor3, OUTPUT); //HABILITA O SENSOR3 (TRIG 3) COMO SAÍDA
digitalWrite(Sensor1, LOW); //HABILITA O SENSOR 1 (TRIG 1) PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor2, LOW); //HABILITA O SENSOR 2 (TRIG 2) PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor3, LOW); //HABILITA O SENSOR 3 (TRIG 3) PARA O NÍVEL LÓGICO BAIXO
delay(10);
digitalWrite(Sensor11, INPUT); //HABILITA O SENSOR11 (ECHO 1) COMO ENTRADA
digitalWrite(Sensor22, INPUT); //HABILITA O SENSOR22 (ECHO 2) COMO ENTRADA
digitalWrite(Sensor33, INPUT); //HABILITA O SENSOR33 (ECHO 3) COMO ENTRADA
Serial.begin(9600);
Serial.println("Lendo dados dos sensores...");
delay(1000);
}
void loop(){
digitalWrite(Sensor1, HIGH); //HABILITA O SENSOR1 PARA O NÍVEL LÓGICO ALTO
digitalWrite(Sensor2, HIGH); //HABILITA O SENSOR2 PARA O NÍVEL LÓGICO ALTO
digitalWrite(Sensor3, HIGH); //HABILITA O SENSOR3 PARA O NÍVEL LÓGICO ALTO
delay(10);
digitalWrite(Sensor1, LOW); //HABILITA O SENSOR1 PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor2, LOW); //HABILITA O SENSOR2 PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor3, LOW); //HABILITA O SENSOR3 PARA O NÍVEL LÓGICO BAIXO
tempo1=pulseIn(Sensor11, HIGH); //CALCULA O TEMPO QUE A ONDA É EMITIDA (TRIG 1) PARA O OBJETO, E NELE RELFETIDA (ECHO 1)
tempo2=pulseIn(Sensor22, HIGH); //CALCULA O TEMPO QUE A ONDA É EMITIDA (TRIG 2) PARA O OBJETO, E NELE REFLETIDA (ECHO 2)
tempo3=pulseIn(Sensor33, HIGH); //CALCULA O TEMPO QUE A ONDA É EMITIDA (TRIG 3) PARA O OBJETO, E NELE REFLETIDA (ECHO 3)
distancia1=(tempo1)/29.4/2; //CALCULA A DISTÂNCIA ENTRE O SENSOR 1 E O OBJETO
distancia2=(tempo2)/29.4/2; //CALCULA A DISTÂNCIA ENTRE O SENSOR 2 E O OBJETO
distancia3=(tempo3)/29.4/2; //CALCULA A DISTÂNCIA ENTRE O SENSOR 3 E O OBJETO
Serial.println("Distância 1: ");
Serial.println(distancia1);
Serial.println("Distância 2: ");
Serial.println(distancia2);
Serial.println("Distância 3: ");
Serial.println(distancia3);
delay(20);
}
Tags:
Tente fazer o seguinte:
digitalWrite(Sensor1, LOW); //HABILITA O SENSOR1 PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor2, LOW); //HABILITA O SENSOR2 PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor3, LOW); //HABILITA O SENSOR3 PARA O NÍVEL LÓGICO BAIXO
delay(2);
digitalWrite(Sensor1, HIGH); //HABILITA O SENSOR1 PARA O NÍVEL LÓGICO ALTO
digitalWrite(Sensor2, HIGH); //HABILITA O SENSOR2 PARA O NÍVEL LÓGICO ALTO
digitalWrite(Sensor3, HIGH); //HABILITA O SENSOR3 PARA O NÍVEL LÓGICO ALTO
delay(5);
digitalWrite(Sensor1, LOW); //HABILITA O SENSOR1 PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor2, LOW); //HABILITA O SENSOR2 PARA O NÍVEL LÓGICO BAIXO
digitalWrite(Sensor3, LOW); //HABILITA O SENSOR3 PARA O NÍVEL LÓGICO BAIXO
Ou use a library para facilitar:
http://blog.filipeflop.com/sensores/sensor-ultrassonico-hc-sr04-ao-...
Tentei usar esse que vc mandou, porém está acontecendo algo estranho. Carrego o código, ativo o serial, e observo o seguinte: Quando energizo os sensores eles param de fornecer a distância, e fica só em zero. Ou sejo, quando eles estão conectados só com as portas digitais, sem está energizado, eles fornecem a distância, quando energizo, a distância fica só em zero. No meu entendimento os sensores só deveriam funcionar após está energizado, correto? E outro, verifiquei se estava curtucircuitando mas não estou rs.
Agora deu certo, usei a library. Bem mais simples.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por