Minecraft Glowstone Cube
Minecraft Glowstone Cube
#define NR_OF_LIGHTS 6
int pins[NR_OF_LIGHTS] = { 0, 1, 2, 3, 4, 5 };
int values[NR_OF_LIGHTS];
int steps[NR_OF_LIGHTS];
#define NR_OF_FADESTEPS 4
int fadesteps[NR_OF_FADESTEPS] = { 192, 128, 64, 0 };
int fade_delay = 30; // millisec
int fade_cycles = 500;
int nr_of_blinks = 2;
int effect = 1;
int randomlights[NR_OF_LIGHTS];
bool chosenlights[NR_OF_LIGHTS];
/**
*
*/
void setup() {
|randomSeed(analogRead(0));
for (int i = 0; i < NR_OF_LIGHTS; i++) {
values[i] = (int)random(230) + 13; // start values between 'max min' and 'min max'
steps[i] = (int)random(4) + 1; // steps between 1 and 4
}
}
/**
*
*/
void loop() {
delay(fade_delay);
if (effect == 1) {
blinkAll();
effect = 2;
else if (effect == 2) {
runningLight(0);
effect = 3;
}
else if (effect == 3) {
runningLight(255);
effect = 1;
}
}
/**
*
*/
void fadingLight(int i) {
int fs = NR_OF_FADESTEPS;
for (int j = 0; fs > 0; fs--, j++) {
if (values[i] > fadesteps[j]) {
break;
}
}
values[i] += fs * steps[i];
if (values[i] > maxvalue || values[i] < minvalue) {
steps[i] *= -1;
}
analogWrite(pins[i], values[i]);
/**
*
*/
/**
*
*/
void blinkAll() {
for (int i = 0; i < nr_of_blinks; i++) {
setAllLights(255);
delay(blink_delay);
setAllLights(0);
delay(blink_delay);
}
}
/**
*
*/
delay(200);
analogWrite(pins[randomlights[i]], startvalue);
}
}
}
/**
*
*/
void randomize() {
for (int i = 0; i < NR_OF_LIGHTS; i++) {
chosenlights[i] = false;
}
int r = (int)random(NR_OF_LIGHTS);
randomlights[0] = r;
chosenlights[r] = true;
break;
}
}
randomlights[i] = r;
chosenlights[r] = true;