Arduino "Automatisk tænd lyset"

Jan 04, 2014 5 Replies
Jump to replies (5)

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