Paso 3: El código
El programa está diseñado para encender las luces de un movimiento del sensor 1 y 2 y apagado por sensor 2 a 1. Las variables de distancia están en cm, por lo que se puede editar la variable para adaptarse a sus necesidades. Por defecto el rango se establece en 100 cm.
El programa es como sigue,
/ * El programa utiliza dos sensores ultrasónicos para proporcionar datos de entrada y salidas usados para encender luces o apagado.
* Código escrito por Siddak Bakshi
* Distribución de los derechos reservados
*/
Variables globales
#define trig1Pin 12 //Defining Pin para Trigger1 (puerto de salida)
#define echo1Pin 13 //Defining Pin de Echo1 (puerto de entrada)
#define trig2Pin //Defining 2 Pin para Trigger2 (puerto de salida)
#define echo2Pin 2 //Defining Pin de Echo2 (puerto de entrada)
int led = 8; / * El led representa la luz que está siendo controlada en este proyecto. Si desea utilizar una bombilla normal reemplazar el led con un relé, que se puede utilizar como un interruptor para la bombilla * /
int led1 = 11; / * Led izquierdo y derecho son sólo por conveniencia. Mientras que los prototipos no pueda ver realmente que sensor ultrasónico está trabajando o está activado. Para que los diodos actúan como indicadores. puede quitar los leds izquierdos y derecho del código para el project.* final /
led2 int = 10;
int contador = 0;
time_since_last_reset largo sin signo = 0; Para el establecimiento de referencia antes de bucles int interval_one = 3000; 3 segundos para los 1 º mientras que lazo
int interval_two = 3000; 3 segundos para 2do mientras que lazo
Final de Variables globales
void setup() {Serial.begin (9600); //Serial Monitor a 9600 baudios
pinMode (trig1Pin, salida);
pinMode (echo1Pin, entrada);
pinMode (trig2Pin, salida);
pinMode (echo2Pin, entrada);
pinMode (led, salida);
pinMode (led1, salida);
pinMode (led2, salida); }
void loop() {}
int duration1, distance1;
digitalWrite (trig1Pin, HIGH);
delayMicroseconds(1000);
digitalWrite (trig1Pin, bajo);
duration1 = pulseIn (echo1Pin, HIGH);
Distance1 = (duration1/2) / 29,1;
Si (distance1 < = 100 & & distance1 > = 0) {}
digitalWrite (led2, HIGH);
int t = 0;
time_since_last_reset = millis(); obtener tiempo referenece mientras (t == 0 & & (millis() - time_since_last_reset) < interval_one) //While lazo no. 1 para 'Lights On'
{int duración3, distance3;
digitalWrite (trig2Pin, HIGH);
delayMicroseconds(1000);
digitalWrite (trig2Pin, bajo);
duración3 = pulseIn (echo2Pin, HIGH);
distance3 = (duración3/2) / 29,1;
Si (distance3 < = 100 & & distance3 > = 0)
{
contador ++; Serial.println ("Contador =" + contador);
digitalWrite (led2, LOW);
Serial.println ("encender");
digitalWrite (led, alto); t = 2000; Delay(1000);
}
}
if((Millis() - time_since_last_reset) > = interval_one) //To apaga led1 si acabe el tiempo {}
digitalWrite (led2, LOW);
}
}
int duration2, distancia2.;
digitalWrite (trig2Pin, HIGH);
delayMicroseconds(1000);
digitalWrite (trig2Pin, bajo);
duration2 = pulseIn (echo2Pin, HIGH);
distancia2. = (duration2/2) / 29,1;
Si (distancia2 < = 100 & & distancia2 > = 0)
{digitalWrite (LED 1, HIGH); //Sensor 1 detecta movimiento por lo tanto condujo int t = 0;
time_since_last_reset = millis(); obtener referencia de tiempo mientras (t == 0 & & (millis() - time_since_last_reset) < interval_two) //While lazo n º 2 para 'LucesOff'
{
int duration4, distance4;
digitalWrite (trig1Pin, HIGH);
delayMicroseconds(1000);
digitalWrite (trig1Pin, bajo);
Duration4 = pulseIn (echo1Pin, HIGH);
distance4 = (duration4/2) / 29,1;
Si (distance4 < = 100 & & distance4 > = 0)
{if(counter==0) {digitalWrite (LED 1, LOW); break;
}
contador--;
Serial.println ("Contador =" + contador);
if(Counter==0) {digitalWrite (LED 1, bajo);
Delay(3000);
Serial.println ("apagar las luces");
digitalWrite (led, baja);
t = t + 1;
}
else if (contador! = 0 & & contador > 0)
{
digitalWrite (LED 1, bajo);
rotura;
}
}
demás if((millis() - time_since_last_reset) > = interval_two) //To apaga led1 si acabe el tiempo {}
digitalWrite (LED 1, bajo);
}
}
}
Delay(300);
}