Hallo,
Ich baue zurzeit einen 5*5*5 Led-Cube und es funktioniert prinzipiell
alles einwandfrei.
Ich verwende einen Atmega32 und verwende zur Ansteuerung demultiplexer,
pro Wand (= 5 Spalten / Anoden der Leds) / 1 demultiplexer -->
entspricht 5 demultiplexer
Die Ebenen werden direkt von PortB geschalten (die Ebenen sind Kathoden
der Leds)
Mein Programm ist so programmiert, dass nur eine einzige Led leuchtet.
D.h es wird eine Led eingeschaltet, eine gewisse Zeit gewartet (200
mikrosek) und danach wieder ausgeschaltet.
Hier die Funktion, die das für mich erledigt:
1 | void drawBitpattern(int led_cube[][5][5])
|
2 | {
|
3 | int ebene, x, y, single;
|
4 |
|
5 | for(ebene = 1; ebene <= 5; ebene++)
|
6 | {
|
7 | //Schaltet die Ebene auf Minus
|
8 | ebeneAn(ebene);
|
9 | for(x = 1; x <= 5; x++)
|
10 | {
|
11 | //Speichert in die globale Variable gPort, welcher Port (abhängig je nach Demux) angesprochen werden soll
|
12 | single = spalteAn(x);
|
13 | for (y = 1; y <= 5; y++)
|
14 | {
|
15 | if(led_cube[ebene-1][x-1][y-1] == 1)
|
16 | {
|
17 | //Schaltet die Pins auf dem variablen Port "gPort" , je nachdem welche Led angesprochen werden osll
|
18 | reiheAn(y, single);
|
19 | _delay_us(150);
|
20 | }
|
21 | }
|
22 | spalteAus(x);
|
23 | }
|
24 | }
|
25 | }
|
Mein Problem ist nun, dass das der Led-Cube nicht unbedingt leuchtstark
ist, weil die Leds einfach zu schnell wieder abgeschaltet werden, erhöht
man das delay, nimmt sie das Auge stärker war, allerdings fängt dann das
ganze an zu "flimmern", weil immer der ganze Würfel "gerendert" wird.
Vll. habt ihr eine Lösung für mich.
MfG