Lamp aanschakelen met sensor en relay

Arduino specifieke Software
Berichten: 3
Geregistreerd: 30 Mrt 2018, 21:54

Lamp aanschakelen met sensor en relay

Berichtdoor foeke024 » 31 Mrt 2018, 13:48

Ik wil in het toilet een verlaagd plafond maken en dan de lamp aanschakelen met de HC-SR505 sensor en een single relay
Ik heb het een en ander werkend maar ik wil dat als er beweging wordt gemeld door de sensor dat die voor 4 minuten aan blijft en dan automatisch uitgaat
Mijn sketch ziet er als volgt uit:

#define PIR 2 // define pint 2 for sensor
#define RELAY 9 // define pin 9 as for relay

void setup() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(PIR, INPUT_PULLUP);// define pin as Input sensor
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}

void loop() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
int motion =digitalRead(PIR);// read the sensor
if(motion){
Serial.println("Motion detected");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println("===nothing moves");
digitalWrite(RELAY,HIGH);// turn the relay OFF
}
delay(500);
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
}

Hoe pas ik dit aan zodat de lamp na detectie 4 minuten blijft branden en dan automatisch uitgaat
Ik ben nieuw op dit forum
Wie kan mij verder helpen

Advertisement

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Lamp aanschakelen met sensor en relay

Berichtdoor FPCUser » 31 Mrt 2018, 14:31

Zie hier een vergelijkbare vraag, met overwegingen, oplossingen e.d.

http://arduinoforum.nl/viewtopic.php?f=8&t=2371&hilit=toilet+ventilator

Berichten: 3
Geregistreerd: 30 Mrt 2018, 21:54

Re: Lamp aanschakelen met sensor en relay

Berichtdoor foeke024 » 31 Mrt 2018, 17:06

Ik heb het een en ander aangepast in de sketch maar weet nog niet of dit helemaal goed is
Zo ziet de sketch er nu uit

#define PIR 2 // define pint 2 for sensor
#define RELAY 9 // define pin 9 as for relay

void setup() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(PIR, INPUT_PULLUP);// define pin as Input sensor
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}


void loop() {
// HC-SR505 Motion Sensor
int motion =digitalRead(PIR);// read the sensor
if(motion){
Serial.println("Motion detected");
digitalWrite(RELAY,LOW);// turn the relay ON
delay(60000);// 1 minuut pauze
}else{
Serial.println("===nothing moves");
digitalWrite(RELAY,HIGH);// turn the relay OFF
}
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
}

Is dit nu correct om de lamp langer te laten branden?

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Lamp aanschakelen met sensor en relay

Berichtdoor Koepel » 31 Mrt 2018, 17:45

Dat werkt wel, maar daar worden we niet blij van.

Tijdens een delay kun je niets anders meer doen. Dus als je later iets wilt toevoegen, dan loop je daar meteen tegenaan.
Als er geen beweging is dan verstuur je de tekst "===nothing moves" steeds weer opnieuw zonder enige pauze. Dat is niet netjes.
Bijlagen
pir.png
pir.png (13.13 KiB) 5030 keer bekeken

Berichten: 3
Geregistreerd: 30 Mrt 2018, 21:54

Re: Lamp aanschakelen met sensor en relay

Berichtdoor foeke024 » 31 Mrt 2018, 22:59

Hoe zou het dan wel moeten?

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Lamp aanschakelen met sensor en relay

Berichtdoor Koepel » 01 Apr 2018, 10:59

Heb je die link bekeken, die FPCUser gaf ?

Mijn voorkeur gaat er naar uit om het moment te bepalen wanneer de PIR sensor aktief.
Wanneer de PIR sensor weer uit gaat, dat maakt me niet uit.
Dan kom je terecht bij de State Change Detection: https://www.arduino.cc/en/Tutorial/StateChangeDetection.

Mijn voorkeur heeft ook om millis() te gebruiken. Dan kun je nog andere dingen doen als de tijdvertraging bezig is.
Om te beginnen met millis() kun je de Blink Without Delay pagina bestuderen: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay.

Ik weet echter niet wat je wilt, en ik weet niet hoe je programmerkennis is.

Stel dat de lamp nog aan is, maar degene heeft het toilet al lang verlaten.
Dan komt er nog iemand binnen.
Wil je dat de tijdvertraging dan opnieuw start ?
Als je dat wilt, dan wil je dus tijdens de tijdvertraging kijken of de PIR sensor weer aktief wordt. Dan kun je dus geen delay() gebruiken, maar heb je millis() nodig.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: hizxafek, Kennethsamact, Sherinkatot en 15 gasten