Skip to content

Instantly share code, notes, and snippets.

@mz2212
Created December 6, 2016 18:51
Show Gist options
  • Save mz2212/c4ab6a8e9863c37ffbdd8f5f021198fa to your computer and use it in GitHub Desktop.
Save mz2212/c4ab6a8e9863c37ffbdd8f5f021198fa to your computer and use it in GitHub Desktop.
#define Blue 9
#define Green 10
#define Red 11
#define MaxBrightness 75 //How bright it should get (0-255) Lower numbers mean faster cycling as well.
bool BlueIsOn = false;
bool GreenIsOn = false;
bool RedIsOn = false;
int BlueBrightness = 0;
int GreenBrightness = 0;
int RedBrightness = 0;
void setup() {
pinMode(A0, INPUT);
pinMode(Blue, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Red, OUTPUT);
randomSeed(analogRead(A0));
for(int i = 9; i <= 11; i++){
on(i);
delay(100);
off(i);
delay(100);
}
}
void loop() {
on(random(Blue, Red + 1));
delay(100);
off(random(Blue, Red + 1));
delay(100);
}
void onPWM(int pin, int brightness){
for(int i = 0; i <= brightness; i++){
analogWrite(pin, i);
delay(10);
}
switch(pin){
case Blue:
if(!BlueIsOn){
BlueIsOn = true;
BlueBrightness = brightness;
}
break;
case Green:
if(!GreenIsOn){
GreenIsOn = true;
GreenBrightness = brightness;
}
break;
case Red:
if(!RedIsOn){
RedIsOn = true;
RedBrightness = brightness;
}
break;
default:
break;
}
}
void offPWM(int pin, int brightness){
for(int i = brightness; i >= 0; i--){
analogWrite(pin, i);
delay(10);
}
switch(pin){
case Blue:
if(BlueIsOn){
BlueIsOn = false;
BlueBrightness = 0;
}
break;
case Green:
if(GreenIsOn){
GreenIsOn = false;
GreenBrightness = 0;
}
break;
case Red:
if(RedIsOn){
RedIsOn = false;
RedBrightness = 0;
}
break;
default:
break;
}
}
void on(int pin){
int brightness = random(0, MaxBrightness);
switch(pin){
case Blue:
if(!BlueIsOn){
onPWM(pin, brightness);
}
break;
case Green:
if(!GreenIsOn){
onPWM(pin, brightness);
}
break;
case Red:
if(!RedIsOn){
onPWM(pin, brightness);
}
break;
default:
break;
}
}
void off(int pin){
switch(pin){
case Blue:
if(BlueIsOn){
offPWM(pin, BlueBrightness);
}
break;
case Green:
if(GreenIsOn){
offPWM(pin, GreenBrightness);
}
break;
case Red:
if(RedIsOn){
offPWM(pin, RedBrightness);
}
break;
default:
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment