Skip to content

Instantly share code, notes, and snippets.

@jaytaph
Last active January 3, 2016 04:09
Show Gist options
  • Save jaytaph/8406974 to your computer and use it in GitHub Desktop.
Save jaytaph/8406974 to your computer and use it in GitHub Desktop.
#define MAXLED 3
int ledPins[MAXLED][3] = {
{2,3,4},
{5,6,7},
{8,9,10},
};
typedef struct _rgb {
float r;
float g;
float b;
} RGB;
typedef struct _led {
RGB cur;
RGB to;
RGB delta;
} led;
led leds[MAXLED];
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
for (int i=0; i!=MAXLED; i++) {
leds[i].cur.r = random(0,255);
leds[i].cur.g = random(0,255);
leds[i].cur.b = random(0,255);
calc_delta(i);
}
}
int rand() {
if (random(0,10) < 5) return 255;
return 0;
}
void calc_delta(int led) {
leds[led].delta.r = (rand() - leds[led].cur.r) / 10;
leds[led].delta.g = (rand() - leds[led].cur.g) / 10;
leds[led].delta.b = (rand() - leds[led].cur.b) / 10;
}
void loop() {
for (int s=0; s!=10; s++) {
delay(100);
for (int i=0; i!=MAXLED; i++) {
analogWrite(ledPins[i][0], byte(leds[0].cur.r));
analogWrite(ledPins[i][1], byte(leds[0].cur.g));
analogWrite(ledPins[i][2], byte(leds[0].cur.b));
}
for (int i=0; i!=MAXLED; i++) {
leds[i].cur.r += leds[i].delta.r;
leds[i].cur.g += leds[i].delta.g;
leds[i].cur.b += leds[i].delta.b;
}
Serial.print("LED1: ");
Serial.print(int(leds[0].cur.r));
Serial.print(" ");
Serial.print(int(leds[0].cur.g));
Serial.print(" ");
Serial.print(int(leds[0].cur.b));
Serial.println("");
}
for (int i=0; i!=MAXLED; i++) {
calc_delta(i);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment