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
#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
}