{"id":771,"date":"2011-06-12T15:35:56","date_gmt":"2011-06-12T14:35:56","guid":{"rendered":"http:\/\/www.kozeniauskas.com\/itblog\/?p=771"},"modified":"2011-08-28T12:26:50","modified_gmt":"2011-08-28T11:26:50","slug":"led-stair-lighting-based-on-arduino-part-7","status":"publish","type":"post","link":"https:\/\/www.kozeniauskas.com\/itblog\/2011\/06\/12\/led-stair-lighting-based-on-arduino-part-7\/","title":{"rendered":"LED stair lighting based on Arduino, Part 7"},"content":{"rendered":"<p>I&#8217;m closing of this project as I think that with the current configuration I will not be able to achieve what I want.<br \/>\nBy 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(<a href=\"http:\/\/www.kozeniauskas.com\/itblog\/category\/arduino\/\">watch this space<\/a>). For those of you who are still interested in this project here is a draft code:<!--more--><\/p>\n<div>int counter = 100; \u00a0\/\/ for delayLights<\/div>\n<div>\/\/ 8 LED pins<\/div>\n<div>int ledPin11 = 11;<\/div>\n<div>int ledPin10 = 10;<\/div>\n<div>int ledPin9 = 9;<\/div>\n<div>int ledPin8 = 8;<\/div>\n<div>int ledPin7 = 7;<\/div>\n<div>int ledPin6 = 6;<\/div>\n<div>int ledPin5 = 5;<\/div>\n<div>int ledPin3 = 3;<\/div>\n<div>int ledVal;<\/div>\n<div>float sinVal;<\/div>\n<div>boolean nightMode = false;<\/div>\n<div>boolean testRun = false;<\/div>\n<div>boolean goingUp = false;<\/div>\n<div>boolean lightsOn = false;<\/div>\n<div>\/\/ choose input pin (for Infrared sensor UP)<\/div>\n<div>int inputPin2 = 2;<\/div>\n<div>int valUP = 0;<\/div>\n<div>int lightSens = 0; \/\/light sensor value<\/div>\n<div>\/\/ choose input pin (for Infrared sensor DOWN)<\/div>\n<div>int inputPin4 = 4;<\/div>\n<div>int valDOWN = 0;<\/div>\n<div>int ledPins[] = { 3, 5, 6, 7, 8, 9, 10, 11};<\/div>\n<div>void setup()<\/div>\n<div>{<\/div>\n<div>pinMode(ledPin11, OUTPUT);<\/div>\n<div>pinMode(ledPin10, OUTPUT);<\/div>\n<div>pinMode(ledPin9, OUTPUT);<\/div>\n<div>pinMode(ledPin8, OUTPUT);<\/div>\n<div>pinMode(ledPin7, OUTPUT);<\/div>\n<div>pinMode(ledPin6, OUTPUT);<\/div>\n<div>pinMode(ledPin5, OUTPUT);<\/div>\n<div>pinMode(ledPin3, OUTPUT);<\/div>\n<div>Serial.begin(9600);<\/div>\n<div>pinMode(inputPin2, INPUT);<\/div>\n<div>}<\/div>\n<div>void loop()<\/div>\n<div>{<\/div>\n<div>lightSens=analogRead(0);<\/div>\n<div>Serial.println(lightSens);<\/div>\n<div>if (lightSens &lt; 900) \/\/check if it is bright<\/div>\n<div>{<\/div>\n<div>nightMode = false;<\/div>\n<div>testRun = false;<\/div>\n<div>}<\/div>\n<div>if (lightSens &gt; 1000) \/\/check if it is dark<\/div>\n<div>{<\/div>\n<div>nightMode = true;<\/div>\n<div>}<\/div>\n<div>if (nightMode == true &amp;&amp; testRun == false) \/\/do a test run<\/div>\n<div>{<\/div>\n<div>TestMode();<\/div>\n<div>testRun = true;<\/div>\n<div>}<\/div>\n<div>if (nightMode == true &amp;&amp; testRun == true)<\/div>\n<div>{<\/div>\n<div>valDOWN = digitalRead(inputPin4);<\/div>\n<div>if (valDOWN == LOW)<\/div>\n<div>{<\/div>\n<div>if (lightsOn == false)<\/div>\n<div>{<\/div>\n<div>goingDownOn();<\/div>\n<div>goingUp = false;<\/div>\n<div>}<\/div>\n<div>if (counter != 0)<\/div>\n<div>{<\/div>\n<div>counter = 10;<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>valUP = digitalRead(inputPin2);<\/div>\n<div>if (valUP == LOW)<\/div>\n<div>{<\/div>\n<div>if (lightsOn == false)<\/div>\n<div>{<\/div>\n<div>goingUpOn();<\/div>\n<div>goingUp = true;<\/div>\n<div>}<\/div>\n<div>if (counter != 0)<\/div>\n<div>{<\/div>\n<div>counter = 10;<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>if (counter != 0)<\/div>\n<div>{<\/div>\n<div>counter = counter &#8211; 1;<\/div>\n<div>delayLights();<\/div>\n<div>}<\/div>\n<div>if (counter == 0 &amp;&amp; goingUp == false &amp;&amp; lightsOn == true)<\/div>\n<div>{<\/div>\n<div>goingDownOff();<\/div>\n<div>}<\/div>\n<div>if (counter == 0 &amp;&amp; goingUp == true &amp;&amp; lightsOn == true)<\/div>\n<div>{<\/div>\n<div>goingUpOff();<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>\/\/ Delay routine<\/div>\n<div>void delayLights()<\/div>\n<div>{<\/div>\n<div>delay(250);<\/div>\n<div>}<\/div>\n<div>\/\/ Going Up light on<\/div>\n<div>void goingUpOn()<\/div>\n<div>{<\/div>\n<div>lightsOn = true;<\/div>\n<div>counter = 10;<\/div>\n<div>for (int i=0; i&lt;10; i++)<\/div>\n<div>{<\/div>\n<div>for (int x=0; x&lt;91; x++)<\/div>\n<div>{<\/div>\n<div>sinVal=(sin(x*(3.1412\/180)));<\/div>\n<div>ledVal=int(sinVal*255);<\/div>\n<div>analogWrite(ledPins[i], ledVal);<\/div>\n<div>delay(2);<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>\/\/ Going Up light off<\/div>\n<div>void goingUpOff()<\/div>\n<div>{<\/div>\n<div>lightsOn = false;<\/div>\n<div>for (int i=0; i&lt;10; i++)<\/div>\n<div>{<\/div>\n<div>for (int x=90; x&gt;-1; x&#8211;)<\/div>\n<div>{<\/div>\n<div>sinVal=(sin(x*(3.1412\/180)));<\/div>\n<div>ledVal=int(sinVal*255);<\/div>\n<div>analogWrite(ledPins[i], ledVal);<\/div>\n<div>delay(5);<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>\/\/ Going Down light on<\/div>\n<div>void goingDownOn()<\/div>\n<div>{<\/div>\n<div>lightsOn = true;<\/div>\n<div>counter = 10;<\/div>\n<div>for (int i=9; i&gt;-1; i&#8211;)<\/div>\n<div>{<\/div>\n<div>for (int x=0; x&lt;90; x++)<\/div>\n<div>{<\/div>\n<div>sinVal=(sin(x*(3.1412\/180)));<\/div>\n<div>ledVal=int(sinVal*255);<\/div>\n<div>analogWrite(ledPins[i], ledVal);<\/div>\n<div>delay(2);<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>\/\/ Going Down light off<\/div>\n<div>void goingDownOff()<\/div>\n<div>{<\/div>\n<div>lightsOn = false;<\/div>\n<div>for (int i=9; i&gt;-1; i&#8211;)<\/div>\n<div>{<\/div>\n<div>Serial.println(&#8220;going down lights off&#8221;);<\/div>\n<div>for (int x=90; x&gt;-1; x&#8211;)<\/div>\n<div>{<\/div>\n<div>sinVal=(sin(x*(3.1412\/180)));<\/div>\n<div>ledVal=int(sinVal*255);<\/div>\n<div>analogWrite(ledPins[i], ledVal);<\/div>\n<div>delay(5);<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div>void TestMode()<\/div>\n<div>{<\/div>\n<div>for (int i=9; i&gt;-1; i&#8211;)<\/div>\n<div>{<\/div>\n<div>digitalWrite(ledPins[i], HIGH);<\/div>\n<div>delay(50);<\/div>\n<div>digitalWrite(ledPins[i], LOW);<\/div>\n<div>Serial.println(&#8220;Test 1&#8221;);<\/div>\n<div>}<\/div>\n<div>for (int i=0; i&lt;10; i++)<\/div>\n<div>{<\/div>\n<div>digitalWrite(ledPins[i], HIGH);<\/div>\n<div>delay(50);<\/div>\n<div>digitalWrite(ledPins[i], LOW);<\/div>\n<div>Serial.println(&#8220;Test 2&#8221;);<\/div>\n<div>}<\/div>\n<div>}<\/div>\n<div><em>Edit:<br \/>\nCopying code from the web makes it useless it changes something and cannot be compiled. Here is a zip file of the code. <strong><a href=\"http:\/\/www.kozeniauskas.com\/itblog\/files\/2011\/06\/good15debug.zip\">Download<\/a><\/strong><\/em><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[345],"tags":[347,348],"_links":{"self":[{"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/posts\/771"}],"collection":[{"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":11,"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"predecessor-version":[{"id":776,"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/posts\/771\/revisions\/776"}],"wp:attachment":[{"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kozeniauskas.com\/itblog\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}