Stap 3: Laatste stap (bedrading en codering)
De bedrading
............................................................................................................................................................................................
. De pin (GND) van de grond op de PIR-sensor moet worden aangesloten op de Arduino de grond pin, de 5 volt pin (VCC) moet worden aangesloten op de Arduino van digitale pin 13, en de data pin (OUT) moet worden aangesloten op de Arduino van digitale pin 12.
De servo's rode draad moet worden aangesloten op de Arduino van 5 volt pin, de bruine draad moet worden aangesloten op de Arduino de grond pin en de signaal draad (het was wit op mijn servo) moet worden aangesloten op de Arduino van digitale pin 4.
...........................................................................................................................................................................................
WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gelieve de code eerst uploaden ga dan voor de bedrading
...........................................................................................................................................................................................
Code: u annuleerteken simpelweg uittreksel het of u kunt ook downloaden van de instructable. :-)
............................................................................................................................................................................................
/*
Aadi creationz
*/
#include
Servo myservo; Hiermee maakt u een servo-object //a maximaal acht servo objecten kunnen worden gemaakt
int pos = 90; variabele servo positie opslaan
bedrag van tijd geven we de sensor kalibreren (10-60 sec volgens het gegevensblad)
int calibrationTime = 30;
het tijdstip wanneer de sensor een lage impuls output lang unsigned int lowIn;
het aantal milliseconden de sensor moet worden lage //before we aannemen dat alle beweging is gestopt lang unsigned int pauze = 5000;
Boole lockLow = waar; Booleaanse takeLowTime;
int pirPin = 12; digitale pin aangesloten op de PIR van uitvoer int pirPos = 13; wordt aangesloten op de PIR van 5V pin
void setup {myservo.attach(4); //attaches servo naar pin 4 Serial.begin(9600) //begins seriële communicatie pinMode (pirPin, INPUT); pinMode (pirPos, OUTPUT); digitalWrite (pirPos, hoge);
de tijd van de sensor om te kalibreren van Serial.println ("kalibreren sensor"); for (int i = 90; ik < calibrationTime; i ++) {Serial.print(calibrationTime-i); Serial.Print("-"); delay(1000); } Serial.println(); Serial.println("Done"); terwijl het maken van dit Instructable, ik had wat problemen met de PIR van uitvoer //going HIGH onmiddellijk na het kalibreren //this wacht totdat de PIR van uitvoer vóór het einde van setup terwijl slinkt (digitalRead(pirPin) == HIGH) {delay(500); Serial.Print("."); } Serial.print("SENSOR ACTIVE"); }
void loop {}
if(digitalRead(pirPin) == HIGH) {//if de PIR uitgang is hoog, beurt servo
/ * bochten servo van 0 tot 180 graden en terug het doet dit door het verhogen van de variabele 'pos' door 1 elke 5 milliseconden totdat het hits 180 en instellen van de servo's positie in graden naar "pos" elke 5 milliseconden het dan het in omgekeerde richting doet te laten terugkeren naar meer informatie over dit, google "for-lussen" om te wijzigen hoeveel graden de servo draait , wijzigen van het nummer 180 op het aantal graden dat u wilt om te schakelen ** / voor (pos = 0; pos < 180; pos += 1) //goes van 0 tot 180 graden {//in stappen van één graad myservo.write(pos); //tells servo naar positie in de variabele 'pos' delay(5) //waits voor de servo om de positie te bereiken} voor (pos = 180; pos > = 1; pos-= 1) //goes van 180 tot 0 graden {myservo.write(pos); //to de servo gaan sneller maken , verminderen van de tijd in vertragingen voor delay(5); om het langzamer gaan, door het getal te verhogen. } if(lockLow) {//makes ervoor dat we wachten op een overgang naar lage voordat verdere uitvoer lockLow plaatsvindt = false; Serial.println("---"); Serial.Print ("bewegingsdetectie op"); Serial.Print(Millis()/1000); Serial.println ("sec"); delay(50); } takeLowTime = true; }
if(digitalRead(pirPin) == LOW) {}
if(takeLowTime) {lowIn = millis(); //save het moment van de overgang van hoog naar laag takeLowTime = false; //make ervoor dat dit gebeurt alleen bij het begin van een lage fase} //if de sensor wordt laag voor meer dan de gegeven pauze, //we kunnen aannemen de motie is gestopt als (! lockLow & & millis() - lowIn > onderbreken) {//makes zeker dit blok code wordt alleen opnieuw uitgevoerd nadat //a nieuwe motie sequentie is gedetecteerd lockLow = true; Serial.Print ("motion eindigde op"); output Serial.print((millis() - onderbreken) / 1000); Serial.println ("sec"); delay(50); } } }