BEHÖVER en PARTNER för min ROBOT---svarar huvud - Arduino (utan 3D-skrivare) (3 / 4 steg)
Steg 3: Sista steget (ledningar och kodning)
Ledningarna
............................................................................................................................................................................................
. Marken stiftet (GND) på PIR-sensorn ska anslutas till den Arduino marken pin, 5 volt pin (VCC) ska anslutas till Arduino's digital stift 13 och data stift (ut) ska anslutas till Arduino's digital stift 12.
Servo är röda sladden ska anslutas till den Arduino 5 volt pin, den bruna kabeln ska anslutas till den Arduino marken pin och signal kabeln (det var vitt på min servo) ska anslutas till Arduino's digital stift 4.
...........................................................................................................................................................................................
WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vänligen ladda upp koden först sedan gå för kabeldragning
...........................................................................................................................................................................................
Kod: du kan helt enkelt kopiera det eller du kan också hämta från den instructable. :-)
............................................................................................................................................................................................
/*
Katarina creationz
*/
#include
Servo myservo; skapar servo objekt //a maximalt åtta servo objekt kan skapas
int pos = 90. variabel att lagra servo position
belopp av tid vi ger sensorn för att kalibrera (10-60 SEK enligt databladet)
int calibrationTime = 30.
tiden när sensorn utgångar en låga impuls länge osignerade int lowIn;
mängden millisekunder sensorn måste vara låg //before vi antar all rörelse har stannat länge osignerade int paus = 5000;
booleska lockLow = sant; booleska takeLowTime;
int pirPin = 12; Digital pin ansluten till den PIR produktion int pirPos = 13. ansluter till den PIR 5V pin
void setup() {myservo.attach(4); //attaches servo till stift 4 Serial.begin(9600); //begins seriell kommunikation pinMode (pirPin, ingång), pinMode (pirPos, produktionen), digitalWrite (pirPos, hög);
att sensorn får tid att kalibrera Serial.println ("kalibrera sensorn"); för (int jag = 90; jag < calibrationTime; i ++) {Serial.print(calibrationTime-i); Serial.Print("-"); Delay(1000); } Serial.println(); Serial.println("Done"); samtidigt att göra detta Instructable, jag hade vissa problem med den PIR produktion //going hög omedelbart efter kalibreringen //this väntar tills den PIR utgång är låg innan du avslutar installationen samtidigt (digitalRead(pirPin) == hög) {delay(500); Serial.Print("."); } Serial.print("SENSOR ACTIVE"); }
void loop() {
IF(digitalRead(pirPin) == hög) {//if PIR utgången är hög, tur servo
/ * vänder servo från 0 till 180 grader och tillbaka det gör detta genom att öka variabeln "pos" av 1 var 5 millisekunder tills den träffar 180 och välja servo är position i grader som "pos" var 5 millisekunder den sedan gör det i omvänt att det går tillbaka till mer information om detta, google "för loopar" att ändra mängden grader servo vänder , ändra siffran 180 till antalet grader du vill att det ska vända ** / för (pos = 0; pos < 180; pos + = 1) //goes från 0 till 180 grader {//in steg av en grad myservo.write(pos); //tells servo gå till position i variabel "pos" delay(5); //waits för servo att nå ställning} för (pos = 180, pos > = 1; pos-= 1) //goes från 180 till 0 grader {myservo.write(pos); //to göra servo gå fortare , minska tid förseningar för delay(5); för att gå långsammare, öka antalet. } if(lockLow) {//makes säker på att vi väntar på en övergång till låg innan ytterligare produktionen görs lockLow = false; Serial.println("---"); Serial.Print ("rörelse upptäckts på"); Serial.Print(Millis()/1000); Serial.println ("sec"); Delay(50); } takeLowTime = sant; }
IF(digitalRead(pirPin) == låg) {
IF(takeLowTime) {lowIn = millis(); //save tiden av övergången från hög till låg takeLowTime = false; //make säker på att detta görs endast i början av en låg fas} //if sensorn är låg för mer än given paus, //we kan anta förslaget har slutat om (! lockLow & & millis() - lowIn > pausa) {//makes säker på detta block av kod körs endast igen efter //a nya förslag sekvens har upptäckt lockLow = sant; Serial.Print ("motion slutade på"); utgång Serial.print((millis() - paus) / 1000); Serial.println ("sec"); Delay(50); } } }