Alright, after I got the parts, i started to experimate some with teh arduino and pir sensors.
The first sketch for 1 pir 1 two-channel relay and 1 motor worked, now i'm trying to get more parts working. Eventually 5 pairs of pir sensor, relay and motor have to work independantly.
The sketch below is based on 2 pir sensors, 2 two channel relays which drive two motors.
The problems:
* I would like to get more pairs (pir, relay and motor) working separetely from each other. One pair worked fine, when i added another, it skipped some of the code. ( it goes from motion detected pir 1 to motion ended pir 2, skipping the 'else' part from pair pir1+relay1, and skipping the if part from pir2+relay2
* I would like to get the pir's working separately, at the moment if one pir is activated the other cannot be activated.
This is my code so far:
/*
* PIR sensor tester
*/
int PIR1 = A0; // choose the input pin (for PIR sensor 1)
int PIR2 = A1; // choose the input pin (for PIR sensor 2)
int r1Pin = 2; // choose the pin for the relay1-channel 1 (up)
int r2Pin = 3; // choose the pin for the relay1-channel 2 (down)
int r3Pin = 4; // choose the pin for the relay2-channel 1 (up)
int r4Pin = 5; // choose the pin for the relay2-channel 2 (down)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() // SETUP:runs once
{
Serial.begin(9600);
// PIR
pinMode(PIR1, INPUT); // declare PIR-sensor1 as input
pinMode(PIR2, INPUT); // declare PIR-sensor2 as input
// RELAY 1
pinMode(r1Pin, OUTPUT);
digitalWrite(r1Pin, LOW); // switch off by default
pinMode(r2Pin, OUTPUT);
digitalWrite(r2Pin, LOW); // switch off by default
// RELAY 2
pinMode(r3Pin, OUTPUT);
digitalWrite(r3Pin, LOW); // switch off by default
pinMode(r4Pin, OUTPUT);
digitalWrite(r4Pin, LOW); // switch off by default
}
void loop()
{
// PIR-1+RELAY-1
val = analogRead(PIR1); // read input value
if (val > 500)
{
if (pirState == LOW)
{
// FEEDBACK
Serial.println("Motion detected pir 1!");
// UP
digitalWrite(r1Pin, HIGH); // turn relay-1 (up) ON
delay(5000); // for 5 seconds
digitalWrite(r1Pin, LOW); // turn relay-1 (up) OFF
// NEW STATE
pirState = HIGH;
}
} else {
if (pirState == HIGH){
// FEEDBACK
Serial.println("Motion ended pir 1!");
// DOWN
digitalWrite(r2Pin, HIGH); // turn relay-2 (down) ON
delay(5000); // for 5 seconds
digitalWrite(r2Pin, LOW); // turn relay-2 (down) OFF
// NEW STATE
pirState = LOW;
}
}
// PIR-2+RELAY-2
val = analogRead(PIR2); // read input value
if (val > 500)
{
if (pirState == LOW)
{
// FEEDBACK
Serial.println("Motion detected pir 2!");
// UP
digitalWrite(r3Pin, HIGH); // turn relay-1 (up) ON
delay(5000); // for 5 seconds
digitalWrite(r3Pin, LOW); // turn relay-1 (up) OFF
// NEW STATE
pirState = HIGH;
}
} else {
if (pirState == HIGH){
// FEEDBACK
Serial.println("Motion ended pir 2!");
// DOWN
digitalWrite(r4Pin, HIGH); // turn relay-2 (down) ON
delay(5000); // for 5 seconds
digitalWrite(r4Pin, LOW); // turn relay-2 (down) OFF
// NEW STATE
pirState = LOW;
}
}
}
Moderator edit: [code] [/code] tags added.