Go Down

Topic: Varios sensores HC-SR04 con un único Trigger (Read 185 times) previous topic - next topic

montotox

Hola! Saludos desde Mendoza, Argentina.
Les comento un poco mi inquietud: Estoy desarrollando un sistema para detectar presencia de objetos grandes, y necesito sacar el mejor provecho a Arduino Uno para trabajar con 5 sensores HC-SR04, 5 salidas para controlar unos relés y por ultimo dejar dos pines libres (pensaba el 0 Rx y 1 Tx) para comunicar a través de RS485 con un arduino maestro.
Por ahora estoy intentando sólo con 2 sensores y no logro tener bien las lecturas. Uno me da bien la distancia y el segundo queda en 0.
He leido en el foro aplicaciones con NewPing y tampoco lo logro hacer funcionar.
Dejo el código simple, para que vean si tengo algo mal.
Muchas gracias
Code: [Select]

#include <Wire.h>             // Agrego librería I2C
#include <LiquidCrystal.h>    // Agrego librería del LCD
#define trigPin 7             // Defino al puerto 7 como "trigPin2" del sensor
#define echoPin 8             // Defino al puerto 8 como "echoPin2" del sensor
#define echoPin2 9            // Defino al puerto 9 como "echoPin2" del sensor

long distancia;               // Declaro que "distancia" va a ser variable entera (32 bits)
long distancia2;              // Declaro que "distancia2" va a ser variable entera (32 bits)
long tiempo;                  // Declaro que "tiempo" va a ser variable entera (32 bits)
long tiempo2;                 // Declaro que "tiempo2" va a ser variable entera (32 bits)

void setup() {
 Serial.begin (9600);         // Abro el puerto serie y seteo velocidad de comunicación a 9600 baudios
 pinMode (trigPin, OUTPUT);   // Defino "trigPin2" como Salida
 pinMode (echoPin, INPUT);    // Defino "echoPin" como Entrada
 pinMode (echoPin2, INPUT);   // Defino "echoPin2" como Entrada
}

void loop() {
 digitalWrite (trigPin, LOW); // Es para estabilizar el sensor, coloco la salida en low
 delayMicroseconds (2);       // Delay de 2 micro segundos
 digitalWrite (trigPin, HIGH);// Envío pulso ultrasonido
 delayMicroseconds (10);      // Delay de 10 micro segundos

 tiempo=pulseIn (echoPin, HIGH);// Función para medir la longitud del pulso entrante desde que sale
 distancia2= int (0.017*tiempo);// Fórmula para calcular distancia obteniendo un valor entero
 
 tiempo2=pulseIn (echoPin2, HIGH);// Función para medir la longitud del pulso entrante desde que sale
 distancia2= int (0.017*tiempo2);// Fórmula para calcular distancia obteniendo un valor entero
 
 // COLOCACIÓN DE INFORMACIÓN EN PANTALLA
 Serial.print ("Distancia: "); // Coloco texto fijo
 Serial.print (distancia); // Coloco el valor obtenido del sensor
 Serial.println ("cm"); // Coloco texto fijo (con el pintln hay linea nueva luego)
 Serial.print ("Distancia2: "); // Coloco texto fijo
 Serial.print (distancia2); // Coloco el valor obtenido del sensor
 Serial.println ("cm"); // Coloco texto fijo (con el pintln hay linea nueva luego)
 delay (300); // Coloco un delay para que inicie el loop nuevamente
 
}

surbyte

Usá la librería NewPing
En arduino antes de hacer algo debes buscar si existe librería que te resuelva el 95% del trabajo.
En tu caso esta librería tiene un ejemplo con 15 sensores.. o sea.. 95% hecho.

montotox

Ok Shannon, voy a estudiar mejor la librería. Muchas gracias

surbyte

Quien es Shannon?
La librería es la mas utilizada con ese sensor. Solo úsala y prueba sus ejemplos individuales y verás que es muy simple de usar.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy