Automatisk knytnäve stötfångaren (3 / 5 steg)
Steg 3: Koden för arduino för ledningarna för först av de stöta
denna kod som jag fick från seraine's instructable()
Jag gjorde bara ett par ändringar till ursprungliga koden som hur långt servo snurrade och hur snabbt den flyttas men det är ganska mycket det. så speciellt tack till seraine.
KODEN
#include < Servo.h >
Servo myservo;
int pos = 0;
länge osignerade int lowIn;
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);
Serial.BEGIN(9600);
pinMode (pirPin, ingång);
pinMode (pirPos, produktionen);
digitalWrite (pirPos, hög);
Serial.println ("kalibrera sensorn");
för (int jag = 0; jag < 30; i ++) {
Serial.Print("-");
Delay(1000);
}
Serial.println();
Serial.println("Done");
medan (digitalRead(pirPin) == hög) {
Delay(500); Serial.Print(".");
}
Serial.Print ("sensorn aktiv");
}
void loop() {
IF(digitalRead(pirPin) == hög) {
för (pos = 0; pos < 90; pos + = 1)
{
myservo.write(POS); berättar servo gå för att placera i variabel "pos"
Delay(5); väntar på servo att nå ställning
}
för (pos = 90; pos > = 1; pos-= 1) //goes från 90 till 0 grader
{
myservo.write(POS);
Delay(50);
}
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(); Spara tiden för övergången från hög till låg
takeLowTime = false;
}
om (! lockLow & & millis() - lowIn > pausa) {
gör säkert detta kodblock endast körs igen efter
ett nytt förslag sekvens har upptäckts
lockLow = sant;
Serial.Print ("motion slutade på"); utgång
Serial.Print((Millis() - paus) / 1000);
Serial.println ("sec");
Delay(50);
}
}
}