Stap 3: De Code
Het programma is ontworpen om te schakelen de verlichting van een beweging van sensor 1 tot 2 en weg voor sensor 2 tegen 1. De afstand variabelen zijn in cm, zodat u de variabele aan uw behoeften kunt bewerken. Het bereik is standaard ingesteld op 100 cm.
Het programma is als volgt,
/ * Het programma maakt gebruik van twee ultrasone sensoren om details te verstrekken voor ingang en uitgangen gebruikt voor het draaien van lichten in- of uitschakelen.
* Code die is geschreven door Siddak Bakshi
* Distributie rechten voorbehouden
*/
Globale variabelen
#define trig1Pin 12 //Defining Pin voor Trigger1 (uitvoerpoort)
#define echo1Pin 13 //Defining Pin voor Echo1 (invoerpoort)
#define trig2Pin 2 //Defining Pin voor Trigger2 (uitvoerpoort)
#define echo2Pin 2 //Defining Pin voor Echo2 (invoerpoort)
int geleid = 8; / * De led vertegenwoordigt het licht dat in dit project wordt gecontroleerd. Als u wilt gebruiken een normale gloeilamp vervangen de led met een estafette, die u als een tuimelschakelaar voor uw lightbulb gebruiken kunt * /
int led1 = 11; / * Led links en rechts zijn alleen voor het gemak. U kunt geen terwijl prototyping eigenlijk bekijken welke ultrasone sensor werkt eigenlijk of wordt geactiveerd. Dus de leds als indicatoren fungeren. u kunt de linker- en leds uit de code voor de laatste project.* verwijderen /
int led2 = 10;
int counter = 0;
unsigned long time_since_last_reset = 0; Voor de vaststelling van de referentieperiode vóór lussen int interval_one = 3000; 3 seconden voor 1e while lus
int interval_two = 3000; 3 seconden voor 2e while lus
Globale variabelen einde
void setup {Serial.begin (9600); //Serial Monitor ingesteld op 9600 baud
pinMode (trig1Pin, OUTPUT);
pinMode (echo1Pin, INPUT);
pinMode (trig2Pin, OUTPUT);
pinMode (echo2Pin, INPUT);
pinMode led (, uitvoer);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT); }
void loop {}
int Duur1, distance1;
digitalWrite (trig1Pin, hoge);
delayMicroseconds(1000);
digitalWrite (trig1Pin, laag);
Duur1 = pulseIn (echo1Pin, hoge);
distance1 = (Duur1/2) / 29.1;
Als (distance1 < = 100 & & distance1 > = 0) {}
digitalWrite (led2, hoge);
int t = 0;
time_since_last_reset = millis(); verkrijgen van tijd referenece terwijl (t == 0 & & (millis() - time_since_last_reset) < interval_one) //While lus No. 1 voor 'Lights On'
{int veld Duur3, distance3;
digitalWrite (trig2Pin, hoge);
delayMicroseconds(1000);
digitalWrite (trig2Pin, laag);
veld Duur3 = pulseIn (echo2Pin, hoge);
distance3 = (Duur3/2) / 29.1;
Als (distance3 < = 100 & & distance3 > = 0)
{
teller ++; Serial.println ("Counter =" + teller);
digitalWrite (led2, laag);
Serial.println ("licht op");
digitalWrite (led, hoog); t = 2000; delay(1000);
}
}
if((Millis() - time_since_last_reset) > = interval_one) //To led1 uitschakelen als tijd opraakt {}
digitalWrite (led2, laag);
}
}
int veld Duur2, distance2;
digitalWrite (trig2Pin, hoge);
delayMicroseconds(1000);
digitalWrite (trig2Pin, laag);
veld Duur2 = pulseIn (echo2Pin, hoge);
distance2 = (Duur2/2) / 29.1;
Als (distance2 < = 100 & & distance2 > = 0)
{digitalWrite (led1, hoge); //Sensor 1 detecteert beweging leidde daarom int t = 0;
time_since_last_reset = millis(); tijd objectverwijzing terwijl (t == 0 & & (millis() - time_since_last_reset) < interval_two) //While lus No. 2 voor "LightsOff"
{
int veld Duur4, distance4;
digitalWrite (trig1Pin, hoge);
delayMicroseconds(1000);
digitalWrite (trig1Pin, laag);
veld Duur4 = pulseIn (echo1Pin, hoge);
distance4 = (veld Duur4/2) / 29.1;
Als (distance4 < = 100 & & distance4 > = 0)
{if(counter==0) {digitalWrite (led1, laag); break;
}
teller--;
Serial.println ("Counter =" + teller);
if(counter==0) {digitalWrite (led1, laag);
delay(3000);
Serial.println ("Lights off");
digitalWrite (led, laag);
t = t + 1;
}
anders als (teller! = 0 & & teller > 0)
{
digitalWrite (led1, laag);
breken;
}
}
anders if((millis() - time_since_last_reset) > = interval_two) //To led1 uitschakelen als tijd opraakt {}
digitalWrite (led1, laag);
}
}
}
delay(300);
}