ok, so I'm trying to set up what started out to be a simple code to turn some LED lights on up the drive in sequence.
Then I wanted an exit sequence.
Then I though adding Ultrasonic system to start the lights automatically when someone entered the drive...
After that I decided a PIR would be better suited for the job..
Which I have placed inside a PIR based Cat/animal scare unit.. so looks like original, but will trigger lights
but I cant seem to get the coding quite right.....
it will probably appear messy, as its been changed sooooo many times....
I'm using a 8 way relay block, and just an Uno board, 16x2 LCD display for info inside the house..
it seems to sit and just detect things all the time, or as seems fit enter the exit mode sequence
code is below..
#include "LiquidCrystal.h"
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);
#define RELAY_ON 0
#define RELAY_OFF 1
#define Buzzer 2 //output to buzzer +'ve
#define PIRin 3 //from PIR sensor
#define Switch 4 //switch to reverse trigger LED's for exit
// #define Turnon 1 //switch LED's on until switched off
#define RELAY1 5 //relay for LED light section 1 by post
#define RELAY2 6 //relay for LED light section 2
#define RELAY3 7 //relay for LED light section 3
#define RELAY4 8 //relay for LED light section 4
#define RELAY5 9 //relay for LED light section 5
#define RELAY6 10 //relay for LED light section 6
#define RELAY7 11 //relay for LED light section 7 step 1
#define RELAY8 12 //relay for LED light section 8 step 2
#define Led 13 //LED to indicate outside lights triggereed
int count = 0; // Count the number of triggers
int Exit = 0; // set Exit switch to LOW
int Gate = 0; // Sets PIR Sensors to Low to start with
// PIR power = Brown > blue > Yellow
// earth = Green > black > Green
// signal = Orange > yellow > Orange
void setup() {
lcd.begin(16, 2); // set up the LCD's number of columns(16) and rows(2):
{
Serial.begin (9600); // initiate serial com
{
// Initialise the Arduino data pins for OUTPUT / INPUT options
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
pinMode(RELAY5, OUTPUT);
pinMode(RELAY6, OUTPUT);
pinMode(RELAY7, OUTPUT);
pinMode(RELAY8, OUTPUT);
pinMode(PIRin, INPUT);
pinMode(Led, OUTPUT);
pinMode(Switch, INPUT);
pinMode(Buzzer, OUTPUT);
// set the outputs ready to start
digitalWrite(RELAY1, RELAY_OFF);
digitalWrite(RELAY2, RELAY_OFF);
digitalWrite(RELAY3, RELAY_OFF);
digitalWrite(RELAY4, RELAY_OFF);
digitalWrite(RELAY5, RELAY_OFF);
digitalWrite(RELAY6, RELAY_OFF);
digitalWrite(RELAY7, RELAY_OFF);
digitalWrite(RELAY8, RELAY_OFF);
Gate = digitalRead(PIRin); // read and rename input value
Exit = digitalRead(Switch); // read and rename input value
delay (3000);
lcd.setCursor(0, 0);
lcd.print(" CALIBRATING! ");
delay (10000);
lcd.setCursor(0, 1);
lcd.print(count);
lcd.setCursor(3, 1);
lcd.print(" Objects Seen");
}
}
}
void loop() {
lcd.setCursor(0, 0); // set up lcd display with text..
lcd.print(" STAND BY MODE! ");
lcd.setCursor(0, 1);
lcd.print(count);
lcd.setCursor(3, 1);
lcd.print(" Objects Seen");
digitalWrite(Led, LOW);
delay (1250); // stablise sensor signal
if (Exit == 1) // check switch settig for exit mode
{ lcd.setCursor(0, 0);
lcd.print(" <EXIT MODE!> ");
Serial.println("EXIT");
digitalWrite(Led, HIGH);
digitalWrite(Buzzer, HIGH);
delay (50);
digitalWrite(Buzzer, LOW);
digitalWrite(RELAY8, RELAY_ON);
delay (300); //time ON between each light
digitalWrite(RELAY7, RELAY_ON);
delay (300);
digitalWrite(RELAY6, RELAY_ON);
delay (300);
digitalWrite(RELAY5, RELAY_ON);
delay (300);
digitalWrite(RELAY4, RELAY_ON);
delay (300);
digitalWrite(RELAY3, RELAY_ON);
delay (300);
digitalWrite(RELAY2, RELAY_ON);
delay (300);
digitalWrite(RELAY1, RELAY_ON);
delay (4000); // TIME ALL ON....
digitalWrite(RELAY8, RELAY_OFF);
delay (100); //time OFF between each light
digitalWrite(RELAY7, RELAY_OFF);
delay (100);
digitalWrite(RELAY6, RELAY_OFF);
delay (200);
digitalWrite(RELAY5, RELAY_OFF);
delay (200);
digitalWrite(RELAY4, RELAY_OFF);
delay (200);
digitalWrite(RELAY3, RELAY_OFF);
delay (200);
digitalWrite(RELAY2, RELAY_OFF);
delay (200);
digitalWrite(RELAY1, RELAY_OFF);
delay (500); // TIME ALL OFF BEFORE RETRIGGER
digitalWrite(Led, LOW);
digitalWrite(Exit, LOW);
}
if (Gate == 1) // check if the input from PIR is HIGH
{
Serial.println("Detected something...");
count++ ; // increase "Objects seen" count by 1
lcd.setCursor(0, 1);
lcd.print(count);
lcd.setCursor(0, 0);
lcd.print(" LIGHTS ARE ON!"); // Display "Light are On" on LCD inside
digitalWrite(Led, HIGH); // turn LED ON
digitalWrite(Buzzer, HIGH); //Beep beep
delay (50);
digitalWrite(Buzzer, LOW);
delay (50);
digitalWrite(Buzzer, HIGH);
delay (50);
digitalWrite(Buzzer, LOW);
digitalWrite(RELAY1, RELAY_ON);
delay (300); //time ON between each light
digitalWrite(RELAY2, RELAY_ON);
delay (300);
digitalWrite(RELAY3, RELAY_ON);
delay (300);
digitalWrite(RELAY4, RELAY_ON);
delay (300);
digitalWrite(RELAY5, RELAY_ON);
delay (300);
digitalWrite(RELAY6, RELAY_ON);
delay (300);
digitalWrite(RELAY7, RELAY_ON);
delay (300);
digitalWrite(RELAY8, RELAY_ON);
delay (3000); // TIME ALL ON....
digitalWrite(RELAY1, RELAY_OFF);
delay (150); //time OFF between each light
digitalWrite(RELAY2, RELAY_OFF);
delay (150);
digitalWrite(RELAY3, RELAY_OFF);
delay (150);
digitalWrite(RELAY4, RELAY_OFF);
delay (150);
digitalWrite(RELAY5, RELAY_OFF);
delay (150);
digitalWrite(RELAY6, RELAY_OFF);
delay (150);
digitalWrite(RELAY7, RELAY_OFF);
delay (150);
digitalWrite(RELAY8, RELAY_OFF);
delay (500); // TIME ALL OFF BEFORE RETRIGGER
digitalWrite(Led, LOW); // turn LED off again
}
else
{
lcd.setCursor(0, 0);
lcd.print(" STAND BY MODE! ");
}
}