// CODE: 12ProgLights.ino /* code from: “Programmable DIY Christmas Lights” by Ken Denmead (Geek Dad Series). A Radio Shack “Great Create” Project advertisement circa 2012 – original source unknown Ad online at: https:www.charlesrubenstein.com/E4D/ProgrammableDIY_XmasLights.pdf */ void setup( ) { for (int i=0; i < 12; i++) { // instead of setting outputs one at a time pinMode (i, OUTPUT); } } void loop( ) { chaseLR( ); chaseRL( ); centerOut( ); oddEven ( ); // define additional functions } /* NOTE: Adjust the timeDelay variable in any routine for longer or shorter delays */ /* The function “chaseLR” sets up a Left to Right Chaser Sequence*/ void chaseLR( ) { int timeDelay = 100; for (int i=0; i < 12; i++) { // increment to 12 by 1 digitalWrite(i, HIGH); delay(timeDelay); digitalWrite(i, LOW); } } /* The function “chaseRL” sets up a Right to Left Chaser Sequence */ void chaseRL( ) { int timeDelay = 100; for (int i=11; i >=0; i--){ // decrement from 11 by 1 digitalWrite(i, HIGH); delay(timeDelay); digitalWrite(i, LOW); } } /* The function “centerOut” lights LEDs starting at the center going in both directions. */ void centerOut( ) { int timeDelay = 100; for (int x=0;x < 7; x++) { // increment x to 7 by 1 int i= 6 + x; int Y =6- x; // Create I, Y // ‘increment’ i by 1: LED 7 to LED 12 // ‘decrement’ Y by 1: LED 6 to LED 1 digitalWrite(Y, HIGH); digitalWrite(i, HIGH); delay(timeDelay); digitalWrite(Y, LOW); digitalWrite(i, LOW); } } /* The function “oddEven” alternates between the odd and even LEDs */ void oddEven( ) { int timeDelay = 400; int count=10; for (int x =0; x< 12; x++) { digitalWrite(x, LOW); } for (int i=0; i< count; i++) { for (int x=0; x< 12; x++) { digitalWrite(x, LOW); } for (int Y=0; Y <12; Y+=2) { digitalWrite(Y, HIGH); } delay(timeDelay) ; for (int x=0; x<12; x++) { digitalWrite(x, LOW); } for (int Y=1;Y <12; Y+=2) { digitalWrite(Y, HIGH); } delay(timeDelay); } // Reset outputs to LOW one at a time for (int i=0; i < 12; i++) { digitalWrite(i, LOW); delay(50); } } //END