Hola que tal amigos, tengo una duda sobre como programar con un sensor ultrasónico, espero alguien de ustedes o del que lea me puedan ayudar, mi problema es que estoy elaborando un proyecto sobre un contador de objetos ya tengo la parte donde dos sensores ultrasónicos cuentan, pero ahora no se como hacer que si uno de los sensores se interrumpe el otro se desactive por un momento para que no cuenten los dos al mismo tiempo, si alguien pudiera ayudarme con eso se lo agradecería muchísimo porfa no ignoren soy un poco principiante.. este es el código del que hablo...
#include <rgb_lcd.h>
#include <stdlib.h>
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
int distancia;
long tiempo;
char buffer[5];
int cont;
int umbral;
boolean hayobjeto;
int distancia1;
long tiempo1;
char buff[5];
int cont1;
int umbral1;
boolean hayobjeto1;
void setup() {
//run once:
// Se inicializa el lcd con lcd.pins
lcd.begin(16, 2);
lcd.setRGB(colorR, colorG, colorB);
//pin 12 como salida: para el pulso ultrasónico
pinMode(12, OUTPUT);
//pin 11 como entrada: tiempo que tarda e pulso en rebotar
pinMode(11, INPUT);
//pin 12 como salida: para el pulso ultrasónico
pinMode(9, OUTPUT);
//pin 11 como entrada: tiempo que tarda e pulso en rebotar
pinMode(10, INPUT);
//Inicializamos las variables
cont=0;
umbral = 35;
hayobjeto = true;
cont1=0;
umbral1 = 35;
hayobjeto1 = true;
}
void loop() {
//run repeatedly:
//Ponemos en el pin que envia el pulso a 0
digitalWrite(12,LOW);
delayMicroseconds(5);
//Ahora mandamos 1 para activar el pulso del sensor
digitalWrite(12, HIGH);
delayMicroseconds(10);
//Recogemos el tiempo que ha tardado el pin 11 en recoger el impulso del sonar (ya rebotado)
tiempo=pulseIn(11, HIGH,3000);
//Formula para calcular la distancia mediante el tiempo que tarda en volver el impulso
distancia= 0.017*tiempo;
//Si la distancia > umbral (no detecta objeto)
if (distancia >= umbral)
{
//si antes habia objeto, ahora ya no está
if (hayobjeto == true)
{
hayobjeto = false;
}
}
//Sino, detecta un objeto
else
{
//Si antes no habia objeto, ahora lo hay y por lo tanto sumamos 1 al contador
if (hayobjeto == false)
{
hayobjeto = true;
cont = cont+1;
}
}
//Escribimos en el LCD la distancia
sprintf (buffer, "% d", distancia);
lcd.setCursor(0,0);
lcd.print("D:");
lcd.print(buffer);
lcd.print("cm. ");
//Escribimos en el LCD el contador de objetos
sprintf (buffer, "% d", cont);
lcd.setCursor(0,1);
lcd.print("C: ");
lcd.print(buffer);
delay (800);
//////////////////////////////////////////////////////////////////segundo sensor ultrasonico///////////////////////////////////////////////
//Ponemos en el pin que envia el pulso a 0
digitalWrite(9,LOW);
delayMicroseconds(5);
//Ahora mandamos 1 para activar el pulso del sensor
digitalWrite(9, HIGH);
delayMicroseconds(10);
//Recogemos el tiempo que ha tardado el pin 11 en recoger el impulso del sonar (ya rebotado)
tiempo1=pulseIn(10, HIGH,3000);
//Formula para calcular la distancia mediante el tiempo que tarda en volver el impulso
distancia1= 0.017*tiempo1;
//Si la distancia > umbral (no detecta objeto)
if (distancia1 >= umbral1)
{
//si antes habia objeto, ahora ya no está
if (hayobjeto1 == true)
{
hayobjeto1 = false;
}
}
//Sino, detecta un objeto
else
{
//Si antes no habia objeto, ahora lo hay y por lo tanto sumamos 1 al contador
if (hayobjeto1 == false)
{
hayobjeto1 = true;
cont1 = cont1+1;
}
}
//Escribimos en el LCD la distancia
sprintf (buff, "% d", distancia1);
lcd.setCursor(7,0);
lcd.print("D1:");
lcd.print(buff);
lcd.print("cm. ");
//Escribimos en el LCD el contador de objetos
sprintf (buff, "% d", cont1);
lcd.setCursor(8,1);
lcd.print("C1:");
lcd.print(buff);
//hacemos un retardo de 1 segundo para evitar posibles variaciones
delay(1000);
}