Hello,
I recently made a 3x3x3 LED cube using white LEDs using the instructions on
I faced a couple of problems and now I have to do a workshop related to it so I need to know why those errors occurred.
I have attached the code to the post.
-
As you can see in the code, in order to power an led I have to do DigitalWrite(layer, HIGH) and then DigitalWrite(column, LOW)
My question is that normally we would have to do DigitalWrite(column, high). I figured out the code through trial and error. Is it because the anodes and cathodes got switched? I tried to do according to the schematic on the website, columns have common anodes and layers have common cathodes. -
when applying this code, if I want to light up the entire cube (the first line pattern in the code), the brightness of the led decreases. Is this because I didn't use a transistor? I powered it using the USB port in my laptop(5V). Or is this because we used only 3 resistors of 2220 ohms.
-
is it necessary to use a transistor in a 3x3x3 LED cube?
-
Should the resistors be connected to each layer or each of the columns?
-
I want to be able to switch only one LED in the entire cube. What would be the code to do that?
I added the code below because it wouldn't attach for some reason.
void setup() {
int d=100;
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}
void loop() {
digitalWrite(A2, HIGH);
digitalWrite(A1, HIGH); // lights up entire cube
digitalWrite(A0, HIGH);
digitalWrite(2,LOW);
delay(d);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
delay(d); // snake column wise
digitalWrite(3, HIGH);
digitalWrite(4,LOW);
delay(d);
digitalWrite(4,HIGH);
digitalWrite(7,LOW);
delay(d);
digitalWrite(7,HIGH);
digitalWrite(6,LOW);
delay(d);
digitalWrite(6,HIGH);
digitalWrite(5,LOW);
delay(d);
digitalWrite(5,HIGH);
digitalWrite(8,LOW);
delay(d);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(d);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
delay(200);
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
delay(d); // snake column wise rewind
digitalWrite(9, HIGH);
digitalWrite(8,LOW);
delay(d);
digitalWrite(8,HIGH);
digitalWrite(5,LOW);
delay(d);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
delay(d);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
delay(d);
digitalWrite(7,HIGH);
digitalWrite(4,LOW);
delay(d);
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(d);
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
delay(200);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A2, HIGH);
digitalWrite(2,LOW);
delay(d);
digitalWrite(2,HIGH);
digitalWrite(5,LOW);
delay(d); // snake pin wise top layer
digitalWrite(5, HIGH);
digitalWrite(8,LOW);
delay(d);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(d);
digitalWrite(9,HIGH);
digitalWrite(6,LOW);
delay(d);
digitalWrite(6,HIGH);
digitalWrite(3,LOW);
delay(d);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
delay(d);
digitalWrite(4,HIGH);
digitalWrite(7,LOW);
delay(d);
digitalWrite(7,HIGH);
digitalWrite(10,LOW);
delay(d);
digitalWrite(10,HIGH);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A1, HIGH);
digitalWrite(10,LOW);
delay(d);
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
delay(d); // snake pin wise middle layer
digitalWrite(9, HIGH);
digitalWrite(8,LOW);
delay(d);
digitalWrite(8,HIGH);
digitalWrite(5,LOW);
delay(d);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
delay(d);
digitalWrite(6,HIGH);
digvitalWrite(7,LOW);
delay(d);
digitalWrite(7,HIGH);
digitalWrite(4,LOW);
delay(d);
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(d);
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
delay(d);
digitalWrite(2,HIGH);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A0, HIGH);
digitalWrite(2,LOW);
delay(d);
digitalWrite(2,HIGH);
digitalWrite(5,LOW);
delay(d); // snake pin wise bottom layer
digitalWrite(5, HIGH);
digitalWrite(8,LOW);
delay(d);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(d);
digitalWrite(9,HIGH);
digitalWrite(6,LOW);
delay(d);
digitalWrite(6,HIGH);
digitalWrite(3,LOW);
delay(d);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
delay(d);
digitalWrite(4,HIGH);
digitalWrite(7,LOW);
delay(d);
digitalWrite(7,HIGH);
digitalWrite(10,LOW);
delay(d);
digitalWrite(10,HIGH);
delay(200);