Étape 3: Le Code
Le programme est conçu pour allumer les lumières d’un mouvement par capteur 1 ou 2 et off pour capteur 2 à 1. Les variables de distance sont en cm, vous pouvez modifier la variable selon vos besoins. Par défaut, la portée est définie à 100 cm.
Le programme est le suivant,
/ * Le programme utilise deux capteurs à ultrasons pour fournir des détails pour l’entrée et sorties utilisées pour allumer les lumières ou d’éteindre.
* Le code écrit par Siddak Bakshi
* Distribution Rights Reserved
*/
Variables globales
#define trig1Pin //Defining 12 broches pour Trigger1 (Port de sortie)
#define echo1Pin //Defining 13 broches pour Echo1 (Port d’entrée)
#define trig2Pin 2 //Defining Pin pour Trigger2 (Port de sortie)
#define echo2Pin 2 //Defining Pin pour Echo2 (Port d’entrée)
int mené = 8 ; / * La led représente la lumière qui est contrôlée à ce projet. Si vous souhaitez utiliser une ampoule normale de remplacer la led avec un relais, vous pouvez utiliser comme un interrupteur à bascule pour votre ampoule * /
led1 int = 11 ; / * Led sont de gauche et droit juste par souci de commodité. Tout en prototypage, vous ne peut pas réellement regarder quel capteur à ultrasons est en train de travailler ou est activé. Si les voyants agissent comme des indicateurs. vous pouvez supprimer les voyants de gauche et de droite dans le code pour le recueille final /
led2 int = 10 ;
int compteur = 0 ;
unsigned long time_since_last_reset = 0 ; Pour la mise en référence de temps avant les boucles int interval_one = 3000 ; 3 secondes pour la 1ère boucle while
int interval_two = 3000 ; 3 secondes pour la 2ème boucle while
Fin de Variables globales
void setup() {Serial.begin (9600); //Serial écran mis à 9600 Bauds
pinMode (trig1Pin, sortie) ;
pinMode (echo1Pin, entrée) ;
pinMode (trig2Pin, sortie) ;
pinMode (echo2Pin, entrée) ;
pinMode (led, sortie) ;
pinMode (led1, sortie) ;
pinMode (led2, sortie) ; }
void loop() {}
Durée1 int, distance1 ;
digitalWrite (trig1Pin, HIGH) ;
delayMicroseconds(1000) ;
digitalWrite (trig1Pin, basse) ;
Durée1 = pulseIn (echo1Pin, HIGH) ;
distance1 = (Durée1/2) / 29,1 ;
Si (distance1 < = 100 & & distance1 > = 0) {}
digitalWrite (led2, HIGH) ;
int t = 0 ;
time_since_last_reset = millis() ; obtenir referenece de temps tout en (t == 0 & & (millis() - time_since_last_reset) < interval_one) //While boucle n ° 1 pour « Lights On »
{int Durée3, distance3 ;
digitalWrite (trig2Pin, HIGH) ;
delayMicroseconds(1000) ;
digitalWrite (trig2Pin, basse) ;
Durée3 = pulseIn (echo2Pin, HIGH) ;
distance3 = (Durée3/2) / 29,1 ;
Si (distance3 < = 100 & & distance3 > = 0)
{
compteur ++ ; Serial.println (« Compteur = » + compteur) ;
digitalWrite (led2, faible) ;
Serial.println (« s’allume ») ;
digitalWrite (conduit, en haut) ; t = 2000 ; Delay(1000) ;
}
}
if((Millis() - time_since_last_reset) > = interval_one) //To désactiver DEL1 si le temps s’épuise {}
digitalWrite (led2, faible) ;
}
}
Durée2 int, distance2 ;
digitalWrite (trig2Pin, HIGH) ;
delayMicroseconds(1000) ;
digitalWrite (trig2Pin, basse) ;
Durée2 = pulseIn (echo2Pin, HIGH) ;
distance2 = (Durée2/2) / 29,1 ;
Si (distance2 < = 100 & & distance2 > = 0)
{digitalWrite (led1, HIGH); //Sensor 1 détecte le mouvement dirigé par conséquent t int = 0 ;
time_since_last_reset = millis() ; obtenir la référence de temps tout en (t == 0 & & (millis() - time_since_last_reset) < interval_two) //While boucle n ° 2 pour « ChâssisOff »
{
int Durée4, distance4 ;
digitalWrite (trig1Pin, HIGH) ;
delayMicroseconds(1000) ;
digitalWrite (trig1Pin, basse) ;
Durée4 = pulseIn (echo1Pin, HIGH) ;
distance4 = (Durée4/2) / 29,1 ;
Si (distance4 < = 100 & & distance4 > = 0)
{if(counter==0) {digitalWrite (led1, LOW); break ;
}
compteur--;
Serial.println (« Compteur = » + compteur) ;
if(Counter==0) {digitalWrite (led1, faible) ;
Delay(3000) ;
Serial.println ("Lights off") ;
digitalWrite (led, faible) ;
t = t + 1 ;
}
ElseIf (compteur! = 0 & & compteur > 0)
{
digitalWrite (led1, faible) ;
rupture ;
}
}
d’autre if((millis() - time_since_last_reset) > = interval_two) //To désactiver DEL1 si le temps s’épuise {}
digitalWrite (led1, faible) ;
}
}
}
Delay(300) ;
}