Rutan sovrum Automation (8 / 26 steg)
Steg 8: Anslut PIR rörelsesensorn
PIR rörelsesensorn är en enhet som kan upptäcka rörelse av en människa upp till 6 m. PIR står för passiv infraröd. Det fungerar på principen om att varje människa släpper ut en utstrålning av viss våglängd. Sensorn känner av dessa strålning och ger en hög effekt när en rörelse detekteras. Så här när du kommer att vinka handen framför den, kommer utloppet få påslagen. Det används också i säkerhetsläget på att upptäcka rörelse på natten. Anslut givaren enligt texten nedan att kontrollera din sensor, ladda upp koden nedan till din arduino.
- VCC---Arduino 5v
- GND---Arduino gnd
- Vout---Arduino analog pinne 1
int calibrationTime = 30.
länge osignerade int lowIn;
länge osignerade int paus = 5000;
booleska lockLow = sant;
booleska takeLowTime;
int pirPin = A1;
int ledPin = 13.
void setup()
{
Serial.BEGIN(9600);
pinMode (pirPin, ingång);
pinMode (ledPin, produktionen);
digitalWrite (pirPin, låg);
Serial.Print ("kalibrera sensorn");
för (int jag = 0; jag < calibrationTime; i ++) {
Serial.Print(".");
Delay(1000);
}
Serial.println ("gjort");
Serial.println ("sensorn aktiv");
Delay(50);
}
void loop()
{
IF(digitalRead(pirPin) == hög)
{
digitalWrite (ledPin, hög);
IF(lockLow)
{
ser till att vi väntar på en övergång till låg innan någon ytterligare utgång görs:
lockLow = false;
Serial.println("---");
Serial.Print ("rörelse upptäckts på");
Serial.Print(Millis()/1000);
Serial.println ("sec");
Delay(50);
}
takeLowTime = sant;
} < /p >< p > if(digitalRead(pirPin) == låg) {
digitalWrite (ledPin, låg); den ledde visualiserar sensorer utgångsstiftet statligt < /p >< p > if(takeLowTime) {
lowIn = millis(); Spara tiden för övergången från hög till låg
takeLowTime = false; se till att detta görs endast i början av en låg fas
}
om sensorn är låg för mer än den givna pausen,
Vi antar att ingen mer motion som kommer att hända
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);
}
}
} < /p >