Lampor som aktiveras av utresa (3 / 4 steg)
Steg 3: Koden
Programmet är utformat för att slå på belysningen från en rörelse från sensor 1 till 2 och av för sensor 2 till 1. Avståndet variablerna är i cm, så att du kan redigera variabeln för att passa dina behov. Som standard anges intervallet till 100 cm.
Programmet är som följer,
/ * Två ultraljudssensorer används för att tillhandahålla Detaljer för in- och utgångar används för att aktivera och stänga lampor.
* Kod skriven av Siddak Bakshi
* Distribution rättigheter reserverade
*/
Globala variabler
#define trig1Pin 12 //Defining PIN-kod för Trigger1 (utgång)
#define echo1Pin 13 //Defining PIN-kod för Echo1 (Input Port)
#define trig2Pin 2 //Defining PIN-kod för Trigger2 (utgång)
#define echo2Pin 2 //Defining PIN-kod för Echo2 (Input Port)
int ledde = 8. / * Led representerar ljuset som kontrolleras i detta projekt. Om du vill använda en normal glödlampa Ersätt led med ett relä, som du kan använda som en vippströmbrytare för din glödlampa * /
int led1 = 11; / * Led vänster och höger är bara för enkelhetens skull. Medan prototyper kan du faktiskt titta på vilka ultrasonic sensor är faktiskt arbetar eller är aktiverad. Lysdioderna agera så som indikatorer. Du kan ta bort de vänstra och högra lysdioderna från koden för den slutliga project.* /
int led2 = 10;
int counter = 0;
osignerade långa time_since_last_reset = 0; För tid referens innan loopar int interval_one = 3000; 3 sekunder för 1: a medan loop
int interval_two = 3000; 3 sekunder för 2: a medan loop
Globala variabler slutet
void setup() {Serial.begin (9600); //Serial Monitor inställd på 9600 baud
pinMode (trig1Pin, produktionen);
pinMode (echo1Pin, ingång);
pinMode (trig2Pin, produktionen);
pinMode (echo2Pin, ingång);
pinMode ledde (, OUTPUT);
pinMode (led1, produktionen);
pinMode (led2, produktionen); }
void loop() {
int Varaktighet1, distance1;
digitalWrite (trig1Pin, hög);
delayMicroseconds(1000);
digitalWrite (trig1Pin, låg);
varaktighet 1 = pulseIn (echo1Pin, hög);
Distance1 = (varaktighet 1/2) / 29,1;
om (distance1 < = 100 & & distance1 > = 0) {
digitalWrite (led2, hög);
int t = 0;
time_since_last_reset = millis(); få tid inrikting medan (t == 0 & & (millis() - time_since_last_reset) < interval_one) //While ögla nr 1 för "Tänder på"
{int duration3, distance3;
digitalWrite (trig2Pin, hög);
delayMicroseconds(1000);
digitalWrite (trig2Pin, låg);
duration3 = pulseIn (echo2Pin, hög);
distance3 = (duration3/2) / 29,1;
om (distance3 < = 100 & & distance3 > = 0)
{
räknaren ++; Serial.println ("Counter =" + counter);
digitalWrite (led2, låg);
Serial.println ("tänder på");
digitalWrite (ledde, högt); t = 2000. Delay(1000);
}
}
IF((Millis() - time_since_last_reset) > = interval_one) //To stänga led1 om tiden går ut {
digitalWrite (led2, låg);
}
}
int Företagsvaraktighet 2, distance2;
digitalWrite (trig2Pin, hög);
delayMicroseconds(1000);
digitalWrite (trig2Pin, låg);
Företagsvaraktighet 2 = pulseIn (echo2Pin, hög);
distance2 = (Företagsvaraktighet 2/2) / 29,1;
om (distance2 < = 100 & & distance2 > = 0)
{digitalWrite (led1, hög), //Sensor 1 upptäcker rörelse ledde därför int t = 0;
time_since_last_reset = millis(); få tid referens samtidigt (t == 0 & & (millis() - time_since_last_reset) < interval_two) //While ögla nr 2 för "LightsOff"
{
int duration4, distance4;
digitalWrite (trig1Pin, hög);
delayMicroseconds(1000);
digitalWrite (trig1Pin, låg);
DURATION4 = pulseIn (echo1Pin, hög);
distance4 = (duration4/2) / 29,1;
om (distance4 < = 100 & & distance4 > = 0)
{if(counter==0) {digitalWrite (led1, låg), semester.
}
räknaren--;
Serial.println ("Counter =" + counter);
IF(Counter==0) {digitalWrite (led1, låg);
Delay(3000);
Serial.println ("Lights off");
digitalWrite (ledde, låg);
t = t + 1.
}
annars om (counter! = 0 & & counter > 0)
{
digitalWrite (led1, låg);
bryta;
}
}
annat if((millis() - time_since_last_reset) > = interval_two) //To stänga led1 om tiden går ut {
digitalWrite (led1, låg);
}
}
}
Delay(300);
}