Hello,
I am new to the Arduino programming and i hope someone can help me with the stairs lightning code i have.
All the hardware is installed and the code works fine, but i want to tweak the code so that if one of the sensors is triggered, but no one walks up or down the stairs the leds go out after 10 seconds.
If someone can help me with this i would be very gratefull.
Thanks in advance
Best regards, Amido
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
///////////// User settings, U may edit!! /////////////
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
#define SpeedOn 25 //Time speed leds turning on in mili seconds
#define SpeedOff 50 //Time speed leds turning off in mili seconds
#define AmoundLed 14 //Amound of leds you use, max 16
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
///////////// Start program do not edit!! /////////////
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
#define sensorUpPin 2 //Sensor upstairs
#define sensorDownPin 3 //Sensor downstairs
#define ledDown 8 //Sensor downstairs indication ( not required )not used
#define ledUp 9 //Sensor upstairs indication ( not required )not used
#include <Wire.h>
#include <PCA9685.h>
boolean downSensorSet = false;
boolean upSensorSet = false;
int sensorUpVal = 0;
int sensorDownVal = 0;
PCA9685 ledDriver;
void setup() {
pinMode(sensorUpPin, INPUT); //sonar upstairs
pinMode(sensorDownPin, INPUT);//sonar downstairs
pinMode(ledDown, OUTPUT);
pinMode(ledUp, OUTPUT);
Wire.begin(); // Wire must be started!
ledDriver.begin(B101000); // Address pins A5-A0 set to B111000
ledDriver.init();
}
void loop() {
sensorUpVal = digitalRead(sensorUpPin);
if (sensorUpVal == HIGH) {
digitalWrite(ledUp,HIGH);
//driveLedsInvertedOff();
if(downSensorSet) {
driveLedsInvertedOff();
downSensorSet = false;}
else if(!upSensorSet && !downSensorSet){
upSensorSet = true;
driveLedsOn();}
}
else {
digitalWrite(ledUp,LOW);
delay(50);
}
sensorDownVal = digitalRead(sensorDownPin);
if (sensorDownVal == HIGH){
digitalWrite(ledDown,HIGH);
//driveLedsInvertedOn();
if(upSensorSet) {
driveLedsOff();
upSensorSet = false;}
else if(!downSensorSet && !upSensorSet){
downSensorSet = true;
driveLedsInvertedOn();}
}
else {
digitalWrite(ledDown,LOW);
delay(50);
}
}
void driveLedsOn()
{
for(int i=0; i<AmoundLed; i++) {
for(int level=10;level>=0;level--) {
ledDriver.setLEDDimmed(i,level*20);
delay(SpeedOn);
}
}
}
void driveLedsOff()
{
for(int i=0; i<AmoundLed; i++) {
for(int level=0;level<=10;level++) {
ledDriver.setLEDDimmed(i,level*20);
delay(SpeedOff);
}
}
}
void driveLedsInvertedOn()
{
for(int i=AmoundLed; i>=0; i--) {
for(int level=10;level>=0;level--) {
ledDriver.setLEDDimmed(i,level*20);
delay(SpeedOn);
}
}
}
void driveLedsInvertedOff()
{
for(int i=AmoundLed; i>=0; i--) {
for(int level=0;level<=10;level++) {
ledDriver.setLEDDimmed(i,level*20);
delay(SpeedOff);
}
}
}