0% found this document useful (0 votes)
14 views5 pages

Minecraft Glowstone Cube

The document describes code for an Arduino project that controls the flashing of LED lights in different patterns and effects using fading, blinking, and running light functions.

Uploaded by

Francisco Zepeda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views5 pages

Minecraft Glowstone Cube

The document describes code for an Arduino project that controls the flashing of LED lights in different patterns and effects using fading, blinking, and running light functions.

Uploaded by

Francisco Zepeda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

DIY MINECRAFT GLOWSTONE CUBE – by Kipkay

Digispark – Arduino LED Flashing Code

#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 blink_delay = 200; //millisec

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() {

for (int j = 0; j < fade_cycles; j++) {


for (int i = 0; i < NR_OF_LIGHTS; i++) {
fadingLight(i);

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 minvalue = (NR_OF_FADESTEPS * abs(steps[i])) + 1;


int maxvalue = 255 - minvalue;

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 setAllLights(int value) {


for (int i = 0; i < NR_OF_LIGHTS; i++) {
analogWrite(pins[i], value);
}
}

/**
*
*/

void blinkAll() {
for (int i = 0; i < nr_of_blinks; i++) {
setAllLights(255);
delay(blink_delay);
setAllLights(0);
delay(blink_delay);

}
}

/**
*
*/

void runningLight(int startvalue) {


setAllLights(startvalue);
for (int j = 0; j < 2; j++) {
randomize();

for (int i = 0; i < NR_OF_LIGHTS; i++) {


analogWrite(pins[randomlights[i]], 255 - startvalue);

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;

for (int i = 1; i < 5; i++) {


while (true) {
r = (int)random(NR_OF_LIGHTS);
if (chosenlights[r] == false) {

break;

}
}

randomlights[i] = r;
chosenlights[r] = true;

for (int i = 0; i < NR_OF_LIGHTS; i++) {


if (chosenlights[i] == false) {
randomlights[5] = i;
break;
}
}
}

You might also like