Forum: Compiler & IDEs LED-Cube Programm Optimierung


von M. W. (m_wu)


Lesenswert?

Hallo,

ich habe einen 4x4x4 LED Cube, welcher mit 16 Pins für die Spalten und 2 
Pins (DEMUX) für die 4 Ebenen angesteuert wird. Ich benutze einen ATMEGA 
168.

Die eigentliche Frage ist, wie ich am besten mein Programm dafür 
schreibe. Bisher habe ich einfach jede LED an und aus gemacht und die 
Ebenen im Multiplexing-Verfahren betrieben. Mein Programm ist viel zu 
lang und ich hätte es gern etwas komprimiert..
Welches Verfahren würde sich dafür eignen und wie gehe ich dann am 
besten vor?

von MaWin (Gast)


Lesenswert?

M. W. schrieb:
> Mein Programm ist viel zu lang

So lang:
1
struct
2
{
3
   uint8_t lower;
4
   uint8_t upper;
5
}
6
leds[4];
7
8
while(1)
9
{
10
    PORTA=i;
11
    PORTB=leds[i].lower;
12
    PORTD=leds[i].upper;
13
    i=(i+1)&3;
14
    _delay_ms(1);
15
}

Das kann nicht das Problem sein.

Viel fragewürdiger ist, wie man interessante Animationen hinbekommt, 
also den Inhalt von leds bestimmt.

Und da fäällt den  meisten auch nichts ein, weswegen die meisten LED 
Cubes langweilig in der Ecke verstauben.

Man müsste mindestens Helligkeit, wenn nicht gar Farbe steuern können, 
das macht aber die LED Ansteuerung auch nicht komplizierter.
1
struct
2
{
3
   uint8_t lower[8];
4
   uint8_t upper[8];
5
}
6
leds[4];
7
8
while(1)
9
{
10
    for(n=0;n<7;n++)
11
    {
12
        PORTA=i;
13
        PORTB=leds[i].lower[n];
14
        PORTD=leds[i].upper[n];
15
        _delay_us(1<<n);
16
    }
17
    i=(i+1)&3;
18
}

Bleibt also eher die Frage, woher das 3d-Video kommt, das angezeigt 
werden soll. Bei 4 x 4 x 4 wird es jedenfalls mit animiert schwimmenden 
Delphinen unter Wasser schwer.

von Falk B. (falk)


Lesenswert?

@ M. W. (m_wu)

>Die eigentliche Frage ist, wie ich am besten mein Programm dafür
>schreibe.

Mit einem Editor.

> Bisher habe ich einfach jede LED an und aus gemacht und die
>Ebenen im Multiplexing-Verfahren betrieben.

So wie es der Rest der Welt auch macht.

> Mein Programm ist viel zu
>lang und ich hätte es gern etwas komprimiert..

Aha. Und wo ist dein Programm? Wo können WIR es sehen?

>Welches Verfahren würde sich dafür eignen und wie gehe ich dann am
>besten vor?

Mit einem Timer und Interrutp.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.