Anti Halloween hus (16 / 39 steg)
Steg 16: Program
Växla mellan växeln på Wireless SD skölden till USB och sedan koppla in.
Programmera Arduino med följande kod:
/*
* Anti Halloween hus
* /////////////////////////
* Detekterar rörelse och stänger av huset belysning
* Baserat på följande i en kommentar nedan:
*
*
* //////////////////////////////////////////////////
* //making känsla av Parallax PIR-sensorn produktion
* //////////////////////////////////////////////////
*
* Växlar en LED beroende på vilket av sensorerna produktionen stift.
* Anger början och slutet av kontinuerlig rörelsesekvenser.
*
* Kristian Gohlke / krigoo (_) gmail (_) com / http://krx.at
* 3. September 2006
*
* kr1 (kluven) 2006
* släppt under en licens creative commons "Attribution-NonCommercial-ShareAlike 2.0"
* http://creativecommons.org/licenses/by-nc-sa/2.0/de/
*
*
* Parallax PIR-sensorn är en lättanvänd digital infraröd rörelse Sensormodul.
* (http://www.parallax.com/detail.asp?product_id=555-28027)
*
* Sensorn utgångsstiftet går till hög om motion är närvarande.
* Även om motion finns det går dock till låg från tid till annan,
* som kan ge intryck av ingen motion är närvarande.
* Detta program behandlar denna fråga genom att ignorera låg-arrangerar gradvis kortare än en viss tid,
* under förutsättning att kontinuerlig rörelse är närvarande under dessa faser.
*
*/
/////////////////////////////
VARS
den tid som 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 har låg
innan vi antar all rörelse har slutat
länge osignerade int paus = 5000;
booleska lockLow = sant;
booleska takeLowTime;
int pirPin = 3; den digital pin ansluten till PIR-sensorns utgång
int ledPin = 13.
void setup() {
Serial.BEGIN(9600);
pinMode (pirPin, ingång);
pinMode (ledPin, produktionen);
digitalWrite (pirPin, låg);
ge sensorn lite tid att kalibrera
för (int jag = 0; jag < calibrationTime; i ++) {
förseningar 30 sekunder för sensor för att kalibrera
Delay(1000);
}
Delay(50);
}
void loop() {
IF(digitalRead(pirPin) == hög) {
digitalWrite (ledPin, låg); styr reläet som styr lampan
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('y'); stänger av ljuset när rörelsen nuvarande
Delay(50);
}
takeLowTime = sant;
}
IF(digitalRead(pirPin) == låg) {
digitalWrite (ledPin, hög); styr reläet som styr lampan
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.println('x'); vänder på ljus om ingen rörelse närvarande
Delay(50);
}
}
}
När du är klar, koppla Arduino och växla växla till "micro SD"