Hardware components | ||||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
I have Taj Mahal 3D crystal laser cube. I found there are many stand bases for these kind of 3D crystal cube and it makes gorgeous view of it. So I've decided to develop it using Arduino.
Link to my blog: http://coronasdk.tistory.com/923
LED Light stand for 3D Crystal laser cube
C/C++I wanted to make a combination and change of a more varied and softer color using random() in randomValue() function.
LEDLights() function will turn on and change the LED Light with the return value of the randomValue() function.
The loop() function will call the LED LIghts() function repeatedly every given time.
LEDLights() function will turn on and change the LED Light with the return value of the randomValue() function.
The loop() function will call the LED LIghts() function repeatedly every given time.
/*
For LED Light stand for 3D Crystal laser cube
version : 0.4
created 03 May 2017
by Douglas Changsoo Park
*/
// Define Pins
#define RED1 3
#define GREEN1 4
#define BLUE1 5
#define RED2 6
#define GREEN2 7
#define BLUE2 8
#define delayTime 100
// define variables
int redValue1;
int greenValue1;
int blueValue1;
int redValue2;
int greenValue2;
int blueValue2;
void setup() {
pinMode(RED1, OUTPUT);
pinMode(GREEN1, OUTPUT);
pinMode(BLUE1, OUTPUT);
digitalWrite(RED1, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(BLUE1, HIGH);
pinMode(RED2, OUTPUT);
pinMode(GREEN2, OUTPUT);
pinMode(BLUE2, OUTPUT);
digitalWrite(RED2, HIGH);
digitalWrite(GREEN2, HIGH);
digitalWrite(BLUE2, HIGH);
redValue1 = random(1, 255);
greenValue1 = random(1, 255);
blueValue1 = random(1, 255);
redValue2 = random(1, 255);
greenValue2 = random(1, 255);
blueValue2 = random(1, 255);
}
void loop() {
LEDLights(redValue1, greenValue1, blueValue1, redValue2, greenValue2, blueValue2);
delay(delayTime * 4);
}
void LEDLights(int red1, int green1, int blue1, int red2, int green2, int blue2) {
redValue1 = red1;
greenValue1 = green1;
blueValue1 = blue1;
redValue2 = red2;
greenValue2 = green2;
blueValue2 = blue2;
int redResult1 = randomValue(redValue1);
int greenResult1 = randomValue(greenValue1);
int blueResult1 = randomValue(blueValue1);
int redResult2 = randomValue(redValue2);
int greenResult2 = randomValue(greenValue2);
int blueResult2 = randomValue(blueValue2);
for (int i = 0; i < 25; i += 1) {
analogWrite(RED1, redValue1 + redResult1);
analogWrite(GREEN1, greenValue1 + greenResult1);
analogWrite(BLUE1, blueValue1 + blueResult1);
analogWrite(RED2, redValue2 + redResult2);
analogWrite(GREEN2, greenValue2 + greenResult2);
analogWrite(BLUE2, blueValue2 + blueResult2);
redValue1 = redValue1 + redResult1;
greenValue1 = greenValue1 + greenResult1;
blueValue1 = blueValue1 + blueResult1;
redValue2 = redValue2 + redResult2;
greenValue2 = greenValue2 + greenResult2;
blueValue2 = blueValue2 + blueResult2;
delay(delayTime);
}
}
int randomValue(int value) {
int result;
int minN;
int maxN;
int interval = random(1, 5);
if (interval == 1) {
minN = 26;
maxN = 229;
} else if (interval == 2) {
minN = 51;
maxN = 204;
} else if (interval == 3) {
minN = 76;
maxN = 179;
} else if (interval == 4) {
minN = 101;
maxN = 154;
} else {
minN = 126;
maxN = 129;
}
if (value < minN) {
result = interval;
} else if (value > maxN) {
result = -interval;
} else {
int randomVal = random(0, 1);
if (randomVal == 0) {
result = interval;
} else {
result = -interval;
}
}
return result;
}
Comments