Arduino "Automatisk tænd lyset"

Jan 04, 2014 5 Replies

Jeg lavede jo et lille stykke elektronik, der forsynede en Pir med


Jeg har ikke testet programmet endnu (men jeg tror da det virker).


Forbedringer er som altid velkommen:



byte relayPin[2] = {2,3}; const int SunPin = 10; const int PirPin = 9; long interval = 120000; long timer = 0;



//Digital pin 2 -> RELAY 1 //Digital pin 3 -> RELAY 2 //Digital pin 10 -> LIGHTSWITCH //Digital pin 9 -> PIR



void setup(){ Serial.begin(9600); for(int i = 0; i < 2; i++) pinMode(relayPin[i],OUTPUT); pinMode(SunPin, INPUT); pinMode(PirPin, INPUT); } void loop(){ if(digitalRead(SunPin) == LOW && digitalRead(PirPin) == LOW) { Serial.println("Waiting for signal from darkdetector"); } if(SunPin == HIGH) { digitalWrite(relayPin[0],HIGH); Serial.println("Pir is on"); Serial.println("Waiting for signal from Pir"); } else { digitalWrite(relayPin[0],LOW); } if(PirPin == HIGH) { timer = millis(); digitalWrite(relayPin[1],HIGH); Serial.println("Light is on"); } if(timer > interval) { timer = 0; digitalWrite(relayPin[1],LOW); Serial.println("Light is off"); } }


Karl Erik.


Den 04-01-2014 04:17, Karl Erik Christensen skrev:

if(PirPin == HIGH) { timer = 0; timer = millis(); digitalWrite(relayPin[1],HIGH); Serial.println("Light is on"); }

Karl Erik.

Karl Erik Christensen skriver:

eksemplet.

if(PirPin == HIGH) { timer = millis(); digitalWrite(relayPin[1],HIGH); Serial.println("Light is on"); if(timer+interval > millis) { digitalWrite(relayPin[1],LOW); Serial.println("Light is off" } }

Klaus

Modelbane Europas hjemmeside: http://www.modelbaneeuropa.dk Min egen hjemmeside: http://www.moppe.dk Forum om modeltog og tog i 1:1: http://www.baneforum.dk

Den 04-01-2014 09:22, Klaus D. Mikkelsen skrev:

Tak for svar.

Det er netop fra "BlinkWithoutDelay" jeg hentede inspiration.

var "smart" :-)

jeg hopper i stolen.

Karl Erik.

Den 04-01-2014 09:54, Karl Erik Christensen skrev:

if(PirPin == HIGH) { timer = millis(); digitalWrite(relayPin[1],HIGH); Serial.println("Light is on"); } if(timer+interval = millis) { digitalWrite(relayPin[1],LOW); Serial.println("Light is off" }

vil fungere.

med timer+interval, slukker lyset - viola :-)

Karl Erik.

Den 04-01-2014 10:22, Karl Erik Christensen skrev:

if(millis() > timer+interval) { digitalWrite(relayPin[1],LOW); Serial.println("Light is off" }

Karl Erik.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required