Stap 21: codering
Code kopiëren:
Deze sketch is het uitvoeren van een PIR-sensor, 4 knipperende lichten en een kleine DC motor. PIR-sensor
reis zal maken van de LED-lampjes knipperen en sla op een motor
definiëren van de pinnen
#define LEDPINFAST1 7; //LED licht
#define LEDPINFAST2 8; //LED licht
#define LEDPINSLOW1 10; //LED licht
#define LEDPINSLOW2 9; //LED licht
int fast1 = LEDPINFAST1; //LED licht knipperen snel
int fast2 = LEDPINFAST2; //LED licht knipperen snel
int slow1 = LEDPINSLOW1; //LED licht knipperen traag
int slow2 = LEDPINSLOW2; //LED licht knipperen traag
int calibrationTime = 30; / / de PIR-sensor kalibreren
het tijdstip wanneer de sensor een lage impuls uitgangen
lang unsigned int lowIn;
het aantal milliseconden de sensor is laag
voordat we aannemen dat alle beweging is gestopt
lang unsigned int pauze = 100;
Boole lockLow = waar;
Booleaanse takeLowTime;
int pirPin = 2; de digitale pin aangesloten op uitgang van de PIR-sensor
int motorPin = 11; Motor pin verbonden
/////////////////////////////
SETUP
VOID Setup {}
Serial.begin(9600);
pinMode (pirPin, INPUT);
pinMode (motorPin, OUTPUT);
digitalWrite (pirPin, laag);
pinMode(fast1,OUTPUT);
pinMode(fast2,OUTPUT);
pinMode(slow1,OUTPUT);
pinMode(slow2,OUTPUT);
sensor kalibreren schrijven naar Aduino programma
Serial.Print ("kalibreren sensor");
for (int i = 0; ik < calibrationTime; i ++) {}
Serial.Print(".");
delay(1000);
}
Serial.println ("done");
Serial.println ("SENSOR actief");
delay(50);
}
////////////////////////////
LOOP
void loop {//I weet er zijn betere manieren om te schrijven deze tekenreeks voor irratic knipperende lichten - maar ik ben nog steeds leren
if(digitalRead(pirPin) == HIGH) {}
analogWrite (slow2, 100);
delay(1000);
analogWrite (slow2, laag);
delay(10); {
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(10);
digitalWrite (slow1, laag);
delay(10);
digitalWrite (fast1, hoge);
delay(100);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(10);
digitalWrite (slow1, laag);
delay(30);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(2000);
digitalWrite (slow1, laag);
delay(10);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(10);
digitalWrite (slow1, laag);
delay(30);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(500);
digitalWrite (slow1, laag);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(2000);
digitalWrite (slow1, laag);
digitalWrite (fast1, hoge);
delay(100);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(10);
digitalWrite (slow1, laag);
delay(30);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(2000);
digitalWrite (slow1, laag);
delay(10);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(10);
digitalWrite (slow1, laag);
delay(30);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(500);
digitalWrite (slow1, laag);
digitalWrite (fast1, hoge);
delay(10);
digitalWrite (fast1, laag);
delay(10);
digitalWrite (fast2, hoge);
delay(10);
digitalWrite (fast2, laag);
delay(10);
digitalWrite (slow1, hoge);
delay(2000);
digitalWrite (slow1, laag);
analogWrite (slow2, 10);
delay(5);
analogWrite (slow2, 50); //LED licht aan hebben halve helderheid
delay(10);
analogWrite (slow2, 100);
}
digitalWrite (motorPin, hoge); {//the motor pin brandt
delay(1000); wachten op een tweede
digitalWrite (motorPin, laag); de motor is uitgeschakeld
delay(5000); Wacht vijf seconden
analogWrite (slow2, laag); //LED licht licht af
}
if(lockLow) {//back op de sensor
PIR laag voordat meer uitvoer plaatsvindt:
lockLow = false;
Serial.println("---");
Serial.Print ("bewegingsdetectie op");
Serial.Print(Millis()/100);
Serial.println ("sec");
delay(50);
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW) {}
digitalWrite (motorPin, laag); PIR is laag dan motor is laag
if(takeLowTime) {}
lowIn = millis(); overgang van hoog naar laag
takeLowTime = false;
}
Als (! lockLow & & millis() - lowIn > onderbreken) {}
maakt zeker dit blok code wordt alleen uitgevoerd na opnieuw
een nieuwe reeks van beweging is gedetecteerd
lockLow = true;
Serial.Print ("motion eindigde op"); uitgang
Serial.Print((Millis() - onderbreken) / 100);
Serial.println ("sec");
delay(50);
}
}
}