So I currently am going to school right now for electronics and I thought it would be fun to buy an ardunio and play with it. My first project is a 3x3x3 LED cube and it came out really great! The soldering was easy but the programming is a bit more of a pain. I hooked each column to pins 1-9 and hooked up each ground to A1,A2 and A3. Someone told me I should use transistors for my grounds but I don't really see a reason why. Right now if I want to turn a layer on I set the the correct cathode pin to low and the correct anode to high.
I would like to make a 5x5x5 cube but i need to become better with programming, and experiment with shift registers first.
Question 1- Should I be using transistors to switch the cathode layers to ground?
Questions 2- How do I write code that will repeat itself a specific number of times? Right now I write the code and then copy and paste it 10x to make it loop.
Questions 3- How can improve my code or my hardware?
//3x3x3 Led Cube First Try!
int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
int ledA1 = A1;
int ledA2 = A2;
int ledA3 = A3;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(ledA1, OUTPUT);
pinMode(ledA2, OUTPUT);
pinMode(ledA3, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(ledA1, LOW);
digitalWrite(ledA2, LOW);
digitalWrite(ledA3, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led9, HIGH);
delay(50);
digitalWrite(led9, LOW);
digitalWrite(led8, HIGH);
delay(50);
digitalWrite(led8, LOW);
digitalWrite(led7, HIGH);
delay(50);
digitalWrite(led7, LOW);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led4, LOW);
digitalWrite(led1, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(50);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(50);
digitalWrite(led3, LOW);
digitalWrite(led6, HIGH);
delay(50);
digitalWrite(led6, LOW);
digitalWrite(ledA1, LOW);
digitalWrite(ledA2, LOW);
digitalWrite(ledA3, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led9, HIGH);
delay(50);
digitalWrite(led9, LOW);
digitalWrite(led8, HIGH);
delay(50);
digitalWrite(led8, LOW);
digitalWrite(led7, HIGH);
delay(50);
digitalWrite(led7, LOW);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led4, LOW);
digitalWrite(led1, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(50);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(50);
digitalWrite(led3, LOW);
digitalWrite(led6, HIGH);
delay(50);
digitalWrite(led6, LOW);
digitalWrite(ledA1, LOW);
digitalWrite(ledA2, LOW);
digitalWrite(ledA3, LOW);
digitalWrite(ledA2, HIGH); // turn the LED off by making the voltage LOW
digitalWrite(ledA3, HIGH); // turn the LED off by making the voltage LOW
digitalWrite(led1, HIGH); // Down Up sweep NO OFF
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(ledA1, LOW);
delay(75);
digitalWrite(ledA1, HIGH);
delay(1);
digitalWrite(ledA2, LOW);
delay(75);
digitalWrite(ledA2, HIGH);
delay(1);
digitalWrite(ledA3, LOW);
delay(75);
digitalWrite(ledA3, HIGH);
delay(1);
digitalWrite(ledA2, LOW);
delay(75);
digitalWrite(ledA2, HIGH);
delay(1);
digitalWrite(ledA2, HIGH); // turn the LED off by making the voltage LOW
digitalWrite(ledA3, HIGH); // turn the LED off by making the voltage LOW
digitalWrite(led1, HIGH); // Down Up sweep NO OFF
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(ledA1, LOW);
delay(75);
digitalWrite(ledA1, HIGH);
delay(1);
digitalWrite(ledA2, LOW);
delay(75);
digitalWrite(ledA2, HIGH);
delay(1);
digitalWrite(ledA3, LOW);
delay(75);
digitalWrite(ledA3, HIGH);
delay(1);
digitalWrite(ledA2, LOW);
delay(75);
digitalWrite(ledA2, HIGH);
delay(1);
digitalWrite(ledA2, HIGH); // turn the LED off by making the voltage LOW
digitalWrite(ledA3, HIGH); // turn the LED off by making the voltage LOW
digitalWrite(ledA3, HIGH);
digitalWrite(ledA1, HIGH);
digitalWrite(led1, LOW); // Down Up sweep NO OFF
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
delay(1);
digitalWrite(led1, HIGH); // Left Right Sweep
digitalWrite(led4, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(ledA1, LOW);
digitalWrite(ledA2, LOW);
digitalWrite(ledA3, LOW);
delay(75);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led7, LOW);
delay(1);
digitalWrite(led2, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led8, HIGH);
delay(75);
digitalWrite(led2, LOW);
digitalWrite(led5, LOW);
digitalWrite(led8, LOW);
delay(1);
digitalWrite(led3, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led9, HIGH);
delay(75);
digitalWrite(led3, LOW);
digitalWrite(led6, LOW);
digitalWrite(led9, LOW);
delay(1);
digitalWrite(led2, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led8, HIGH);
delay(75);
digitalWrite(led2, LOW);
digitalWrite(led5, LOW);
digitalWrite(led8, LOW);
delay(1);
}
I had to shorten the code a ton to fit on this post