Hallo,
vor kurzem hab ich mir ein Arduino Mega 2560 gekauft und gemerkt, dass man mit Arduino viele coole Sachen machen kann.
Ich hab dann versucht 3x3x3 LED-Cube zu bauen und es ohne Probleme geschafft zu programmieren. Dann wurde es interessanter und ich versuchte 5x5x5 LED-Cube zu bauen, am anfangt nutzte ich zuerst programmier Technik von 3x3x3 LED-Cube (9 Säulen und 3 Ebenen) und merkte es ist aufwändiger und verbraucht viel Speicher also hab ich mich umgestellt auf Multiplex und nutzte es auch. Zuerst war es noch gut aber dann versuchte ich Buchstaben zu programmieren, und ja die ersten Effekte klappten noch gut aber jetzt komm ich an den Punkt wo ich einfach eure persönlich Meinung wissen will.
Hier ist mein Code und ich würde gerne wissen ob ich es irgendwie anders schreiben kann, und wie ich die Buchstaben von links nach recht bewegen kann (wenn es äußerst abgebildet ist und dann in Uhrzeigerrichtung sich bewegt)?
Code:
#include <TimerOne.h>
//LED-Ebenen////////////////////////////////////////////////////////////////////
int E1 = A0;
int E2 = A1;
int E3 = A2;
int E4 = A3;
int E5 = A4;
//Umkehrung von HIGH und LOW/////////////////////////////////////////////////////
int An = LOW; // Die Umkehrung ist nötig da wir durch die
int Aus = HIGH; // Verstärkerschaltung eine umgekehrte Logik erhalten
//Erstellung der Arrays der LED Säulen.///////////////////////////////
int LEDs[25] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
//Erstellung des 3-Dimensionalen Arrays//////////////////////////////////////////////////////////
int Matrix[5][5][5] = { {{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }},
{{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }},
{{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }},
{{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }},
{{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }}};
////////////////////////////////////////////////////////////////////////////
void setup() {
randomSeed(analogRead(5));
// Intitialisierung der Ausgänge////////////////////////////////////////////
for(int i = 0; i < 25; i++)
pinMode(LEDs[i], OUTPUT); // Alle Pins des Arrays als Ausgang
//////////////////////////////////////////////////////////////////////////////
pinMode (E1, OUTPUT); //Ebenen
pinMode (E2, OUTPUT);
pinMode (E3, OUTPUT);
pinMode (E4, OUTPUT);
pinMode (E5, OUTPUT);
//Interrupt//////////////////////////////////////////////////////////////////
//Springt automatisch in die Multiplex Routine
Timer1.initialize(2000); //Um eine sichere darstellung der Animation zu
Timer1.attachInterrupt( MUX ); //gewährleisten.
//Wert ist in Mikrosekunden angegeben.
}
void loop (){
//LetterW
Matrix[0][0][0] = 1;
Matrix[0][0][4] = 1;
Matrix[1][0][0] = 1;
Matrix[1][0][4] = 1;
Matrix[2][0][4] = 1;
Matrix[2][0][0] = 1;
Matrix[3][0][4] = 1;
Matrix[3][0][0] = 1;
Matrix[3][0][2] = 1;
Matrix[4][0][3] = 1;
Matrix[4][0][1] = 1;
delay(100);
Reset();
Matrix[0][1][0] = 1;
Matrix[0][1][4] = 1;
Matrix[1][1][0] = 1;
Matrix[1][1][4] = 1;
Matrix[2][1][4] = 1;
Matrix[2][1][0] = 1;
Matrix[3][1][4] = 1;
Matrix[3][1][0] = 1;
Matrix[3][1][2] = 1;
Matrix[4][1][3] = 1;
Matrix[4][1][1] = 1;
delay(100);
Reset();
Matrix[0][2][0] = 1;
Matrix[0][2][4] = 1;
Matrix[1][2][0] = 1;
Matrix[1][2][4] = 1;
Matrix[2][2][4] = 1;
Matrix[2][2][0] = 1;
Matrix[3][2][4] = 1;
Matrix[3][2][0] = 1;
Matrix[3][2][2] = 1;
Matrix[4][2][3] = 1;
Matrix[4][2][1] = 1;
delay(100);
Reset();
Matrix[0][4][0] = 1;
Matrix[0][0][4] = 1;
Matrix[1][4][0] = 1;
Matrix[1][0][4] = 1;
Matrix[2][0][4] = 1;
Matrix[2][4][0] = 1;
Matrix[3][0][4] = 1;
Matrix[3][4][0] = 1;
Matrix[3][2][2] = 1;
Matrix[4][1][3] = 1;
Matrix[4][3][1] = 1;
delay(100);
Reset();