LED stair lighting based on Arduino, Part 7

I’m closing of this project as I think that with the current configuration I will not be able to achieve what I want.
By closing this project I will kick of a new one(Version 2) which would be a bit more complicated from the hardware and programming point but at least it will give me more freedom. The new version of arduino automatic stairs is already being developed and I will post a new post soon(watch this space). For those of you who are still interested in this project here is a draft code:

int counter = 100;  // for delayLights
// 8 LED pins
int ledPin11 = 11;
int ledPin10 = 10;
int ledPin9 = 9;
int ledPin8 = 8;
int ledPin7 = 7;
int ledPin6 = 6;
int ledPin5 = 5;
int ledPin3 = 3;
int ledVal;
float sinVal;
boolean nightMode = false;
boolean testRun = false;
boolean goingUp = false;
boolean lightsOn = false;
// choose input pin (for Infrared sensor UP)
int inputPin2 = 2;
int valUP = 0;
int lightSens = 0; //light sensor value
// choose input pin (for Infrared sensor DOWN)
int inputPin4 = 4;
int valDOWN = 0;
int ledPins[] = { 3, 5, 6, 7, 8, 9, 10, 11};
void setup()
{
pinMode(ledPin11, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial.begin(9600);
pinMode(inputPin2, INPUT);
}
void loop()
{
lightSens=analogRead(0);
Serial.println(lightSens);
if (lightSens < 900) //check if it is bright
{
nightMode = false;
testRun = false;
}
if (lightSens > 1000) //check if it is dark
{
nightMode = true;
}
if (nightMode == true && testRun == false) //do a test run
{
TestMode();
testRun = true;
}
if (nightMode == true && testRun == true)
{
valDOWN = digitalRead(inputPin4);
if (valDOWN == LOW)
{
if (lightsOn == false)
{
goingDownOn();
goingUp = false;
}
if (counter != 0)
{
counter = 10;
}
}
valUP = digitalRead(inputPin2);
if (valUP == LOW)
{
if (lightsOn == false)
{
goingUpOn();
goingUp = true;
}
if (counter != 0)
{
counter = 10;
}
}
}
if (counter != 0)
{
counter = counter – 1;
delayLights();
}
if (counter == 0 && goingUp == false && lightsOn == true)
{
goingDownOff();
}
if (counter == 0 && goingUp == true && lightsOn == true)
{
goingUpOff();
}
}
// Delay routine
void delayLights()
{
delay(250);
}
// Going Up light on
void goingUpOn()
{
lightsOn = true;
counter = 10;
for (int i=0; i<10; i++)
{
for (int x=0; x<91; x++)
{
sinVal=(sin(x*(3.1412/180)));
ledVal=int(sinVal*255);
analogWrite(ledPins[i], ledVal);
delay(2);
}
}
}
// Going Up light off
void goingUpOff()
{
lightsOn = false;
for (int i=0; i<10; i++)
{
for (int x=90; x>-1; x–)
{
sinVal=(sin(x*(3.1412/180)));
ledVal=int(sinVal*255);
analogWrite(ledPins[i], ledVal);
delay(5);
}
}
}
// Going Down light on
void goingDownOn()
{
lightsOn = true;
counter = 10;
for (int i=9; i>-1; i–)
{
for (int x=0; x<90; x++)
{
sinVal=(sin(x*(3.1412/180)));
ledVal=int(sinVal*255);
analogWrite(ledPins[i], ledVal);
delay(2);
}
}
}
// Going Down light off
void goingDownOff()
{
lightsOn = false;
for (int i=9; i>-1; i–)
{
Serial.println(“going down lights off”);
for (int x=90; x>-1; x–)
{
sinVal=(sin(x*(3.1412/180)));
ledVal=int(sinVal*255);
analogWrite(ledPins[i], ledVal);
delay(5);
}
}
}
void TestMode()
{
for (int i=9; i>-1; i–)
{
digitalWrite(ledPins[i], HIGH);
delay(50);
digitalWrite(ledPins[i], LOW);
Serial.println(“Test 1”);
}
for (int i=0; i<10; i++)
{
digitalWrite(ledPins[i], HIGH);
delay(50);
digitalWrite(ledPins[i], LOW);
Serial.println(“Test 2”);
}
}
Edit:
Copying code from the web makes it useless it changes something and cannot be compiled. Here is a zip file of the code. Download

Leave a Reply

Your email address will not be published.