//Kyoxiilbuzz 26-Jan-2013 version 2 // Delay time: sets the time in milliseconds between loop iterations. // Make this value large for slower transitions. #define DELAY_TIME 5 // Maximum Brightness: the maximum level the pins will reach. #define MAX_BRIGHT 255 // The pins which each color value is output to. int B = 4; //Connect Blue led to Digital pin 9 int R = 5;//Connect Red led to Digital pin 10 int G = 6;//Connect Green led to Digital pin 11 // The initial values of each color in moodlamp. int red = 0; int green = 255; int blue = 150; long Timenow = 0; //will store loop time since start int Soundnow = 0; //will store loop sound value long Timelast = 0; //will store previous loop time int Soundlast = 0; //will store previous loop sound value int Eventcount = 0; //will count the events numbers byte offmode=0; //turn off and keep until sound int lightsensor=0; //store light sensor values after conversion from 1024 to 255 byte FirstMood=0; //a counter to check if first mood int incR = 1; //to increment in mood mode int incG = 1; //to increment in mood mode int incB = 0; //to increment in mood mode long TimeMood=0; void setup() { for(int i=4;i<7;i++) pinMode(i,OUTPUT); // Serial.begin(9600); } void Firemode(int lightsensor) { int Redintensity=constrain (random(90)+165-lightsensor,0,255); int Greenintensity=constrain (random(80)+30-lightsensor,0,110); analogWrite(R,Redintensity); analogWrite(G, Greenintensity); analogWrite(B, 0); } void Allblue(int lightsensor) { // int Redintensity=constrain (random(90)+165-lightsensor,0,255); // int Greenintensity=constrain (random(80)+30-lightsensor,0,255); int Blueintensity=constrain (255-lightsensor,0,255); analogWrite(R,0); analogWrite(G,0); analogWrite(B,Blueintensity); } void Allgreen(int lightsensor) { // int Redintensity=constrain (random(90)+165-lightsensor,0,255); int Greenintensity=constrain (255-lightsensor,0,255); // int Blueintensity=constrain (255-lightsensor,0,255); analogWrite(R,0); analogWrite(G,Greenintensity); analogWrite(B,0); } void Allred(int lightsensor) { int Redintensity=constrain (255-lightsensor,0,255); // int Greenintensity=constrain (random(80)+30-lightsensor,0,255); // int Blueintensity=constrain (255-lightsensor,0,255); analogWrite(R,Redintensity); analogWrite(G,0); analogWrite(B,0); } void Allyellow(int lightsensor) { int Redintensity=constrain (255-lightsensor,0,255); int Greenintensity=constrain (255-lightsensor,0,255); //int Blueintensity=constrain (255-lightsensor,0,255); analogWrite(R,Redintensity); analogWrite(G,Greenintensity); analogWrite(B,0); } void Allpink(int lightsensor) { int Redintensity=constrain (255-lightsensor,0,255); // int Greenintensity=constrain (255-lightsensor,0,255); int Blueintensity=constrain (127-lightsensor,0,127); analogWrite(R,Redintensity); analogWrite(G,0); analogWrite(B,Blueintensity); } void Allwhite(int lightsensor) { int Redintensity=constrain (255-lightsensor,0,255); int Greenintensity=constrain (255-lightsensor,0,255); int Blueintensity=constrain (255-lightsensor,0,255); analogWrite(R,Redintensity); analogWrite(G,Greenintensity); analogWrite(B,Blueintensity); } void MoodMode() { if (Timenow-TimeMood>75) { transition(); setColor(); TimeMood = Timenow; } } // Smoothly changes the color values void transition() { if (red >= 255) incR = 0; else if (red <= 0) incR = 1; if (green >= 255) incG = 0; else if (green <= 0) incG = 1; if (blue >= 255) incB = 0; else if (blue <= 0) incB = 1; if (incR) red++; else red--; if(incG) green++; else green--; if(incB) blue++; else blue--; } // Sets the output voltage on the LED pins. void setColor() { analogWrite(R, red); analogWrite(G, green); analogWrite(B, blue); } void Off() { analogWrite(R,0); analogWrite(G,0); analogWrite(B,0); offmode=1; FirstMood = 0; } void loop() { Timenow =millis(); Soundnow = analogRead(2); lightsensor=map(analogRead(1),30,1010,255,0); if (Soundnow-Soundlast>200 && Timenow-Timelast>100) {if (Eventcount<9) { Eventcount++; Timelast=Timenow; offmode=0; } else { Eventcount =0; Timelast=Timenow; } } // if (Timenow-Timelast>25){ // Serial.println(Eventcount);//debug mode switch (Eventcount){ case 0: Firemode(lightsensor); //delay(200); break; case 1: Allgreen(lightsensor); //delay(200); break; case 2: Allblue(lightsensor); //delay(200); break; case 3: Allred(lightsensor); // delay(200); break; case 4: Allyellow(lightsensor); //delay(200); break; case 5: Allpink(lightsensor); // delay(200); break; case 6: Allwhite(lightsensor); //delay(200); break; case 7: MoodMode(); //delay(200); break; case 8: Off(); //delay(200); break; // } } }