-         

Ergebnis 1 bis 6 von 6

Thema: LED-Cube 3x3x3

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.07.2011
    Beiträge
    7

    LED-Cube 3x3x3

    Anzeige

    Hallo,

    als Lernprojekt würde ich gerne einen 3x3x3-LED-Cube mit dem RN-Control aufbauen. Ein LED würde ich an PORTA anschließen, davon gibt es ja beim RN-Control 12. Zu steuern wären 27 LEDs. Was ist hier die übliche Vorgehensweise der Steuerung? Ich möchte natürlich jedes LED per Programm einzeln ansteuern können.

    Vielen Dank

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Hardware sollte damit relativ einfach sein: 9 Ausgänge mit Widerstand, besser auf 2 Ports verteilen, also nicht 8 mal an Port A, sondern besser zu 4 +5 auf 2 Ports verteilen. Dazu dann 3 Ausgänge mit Treiber (z.B. BC338-16 oder ULN2003).

    Die Steuerung der LEDs sollte im Timer Interrupt laufen, wohl mit Software PWM mit vielleicht 8 Bit Auflösung, ggf. auch weniger, wenn die Zeit knapp wird. Die LEDs bekommen so je einen passend langen Puls und danach wird auf die nächste Ebene gewechselt. Für die LEDs gibt es dann ein Array mit 27 Einträgen für die Helligkeit der LEDs.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.07.2011
    Beiträge
    7
    Verzeih mir, aber mit deiner vermutlich klugen Antwort kann ich als naiver Anfänger nichts anfangen.

    Zitat Zitat von Besserwessi Beitrag anzeigen
    Die Hardware sollte damit relativ einfach sein: 9 Ausgänge mit Widerstand, besser auf 2 Ports verteilen, also nicht 8 mal an Port A, sondern besser zu 4 +5 auf 2 Ports verteilen. Dazu dann 3 Ausgänge mit Treiber (z.B. BC338-16 oder ULN2003).
    Hey hey... Okay, mit Treiber meinst du anscheinend Transistoren.
    Warum neun Ausgänge? Das wäre dann eine Ebene. Und was heißt "dazu 3 Ausgänge"? Wie "dazu"? Wie wird das deines Erachtens verschaltet?

    Zitat Zitat von Besserwessi Beitrag anzeigen
    Die Steuerung der LEDs sollte im Timer Interrupt laufen, wohl mit Software PWM mit vielleicht 8 Bit Auflösung, ggf. auch weniger, wenn die Zeit knapp wird. Die LEDs bekommen so je einen passend langen Puls und danach wird auf die nächste Ebene gewechselt. Für die LEDs gibt es dann ein Array mit 27 Einträgen für die Helligkeit der LEDs.
    Warum brauche ich einen Timer und die LEDs einen passenden Puls? Und wann und warum wird dann in die nächste Ebene gewechselt?
    Ich habe mir das um ehrlich zu sein sehr viel naiver vorgestellt: ich hätte rundherum im Würfel einen Draht gespannt, an dem die Kathoden der LEDs schon angelötet werden. Nun muss schlicht an die Anode jeder LED eine Steuerleitung. Soll die LED leuchten, kommt da halt Saft drauf. Damit wäre das Problem doch schon abgefrühstückt, problematisch ist jetzt nur noch die Anzahl der Steuerleitungen (27), weil ich die nicht anschleßen kann und weil ein Steuer-Bus aus 27 Leitungen vielleicht auch nicht so Klasse aussieht. Daher die Frage, wie man das minimieren kann.

    Sorry für die vielleicht doofen Fragen
    Danke

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Beim LED Cube nutzt man in der Regel eine Matrixansteuerung: Die LEDs einer Ebene werden mit den Kathoden zusammenschaltet und kommen damit an einen Treiber oder Transistor. Die Treiber sind nötig, denn hier geht der Strom von bis zu 9 LEDs gleichzeitig durch (bis knapp 200 mA in diesen Beispiel).

    Die LEDs werden zwischen den Ebenen an den Anoden verbunden - hier je 3 zusammen, aus jeder Ebene eine. Von den 9 LED Gruppen geht es dann mit einem Vorwiderstand zu µC Ausgängen. Bei nur 3 Ebenen sollten die Ausgänge des µC noch kräftig genug sein. Ein Vorteil der Matixschaltung ist das man auch weniger Leitungen braucht und die dann im LED Cube nicht so stören. Für den 3x3x3 Cube braucht man nur 9+3 = 12 Leitungen statt sonst 27 + GND.
    Die LED leuchten damit nicht alle gleichzeitig, sondern immer nur eine Ebene zur Zeit. Für eine kurze Zeit von vielleicht 5 ms leuchten dann die LEDs einer Ebene, und danach wird auch die nächste Ebene gewechselt. Eine geringer Helligkeit bekommt man wenn der Puls für die LED kürzer ist. Für den Anfang reicht es aber wenn die LEDs nur an/aus gehen. Eine Variable Helligkeit ist dann der nächste Schritt.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Was Besserwessi stillschweigend vorausgesetzt hat, war, dass du die 27 LEDs per "multiplexing" steuern wirst.
    d.h 3x3 = 9 LEDs per ebene und davon 3
    man aktiviert Ebene 1 und dreht die LEDs dieser Ebene nach bedarf auf.
    dann Ebene 2 und Ebene 3

    Das Ganze flott und zyklisch
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Alter
    21
    Beiträge
    355
    Mal ein Schaltplan wie das aussieht, wenn man denn multiplexing verwenden will: http://www.ledstyles.de/index.php?pa...1838b113fe8373

    Der Code kann so aussehen:
    Code:
    #include <stdlib.h>
    #include <avr/io.h>
    // #include "def.h"
    // #include "muster.txt"
    
    unsigned char muster[4][6]= // muster[Bildnummer][Bildmuster]
    {
        {
        0b01000000, 0b00000000, // Bild 1
        0b00100000, 0b00000000,
        0b00010001, 0b11111111
        },
    
        {
        0b01000000, 0b00000000, // Bild 2
        0b00100001, 0b11111111,
        0b00010000, 0b00000000
        },
    
        {
        0b01000001, 0b11111111, // Bild 3
        0b00100000, 0b00000000,
        0b00010000, 0b00000000
        },
    
        //...
    
        {
        0b01000000, 0b00000000, // Bild 10
        0b00100000, 0b01010100,
        0b00010000, 0b00000000
        }
    };
    
    int main(void)
    {
        int bildnr;
        int ebene;
        int dauer_bild;
        int dauer_ebene;
    
       //Pins bzw. Ports als Ausgänge konfigurieren
       DDRB = 0xFF;             // 0b11111111 --> Alle Pins an Port B als Ausgänge
       DDRD = 0b01110001;    // 0b01110001 --> Benutzte Pins an Port D als Ausgänge
    
        while(1)
        {
            for ( bildnr = 0; bildnr < 4; bildnr++ )
            {
               for ( dauer_bild = 0; dauer_bild < 10000; dauer_bild++ ) // geschätzt
                {
                  for (ebene = 0; ebene < 3; ebene++)
                    {
                       for(dauer_ebene = 0; dauer_ebene < 50; dauer_ebene++) // geschätzt
                       {
                          PORTD = muster[bildnr][ebene*2]; // Ebene und LED Säule 1 ausgeben
                          PORTB = muster[bildnr][ebene*2+1]; // LEDs Säule 2 bis 9 ausgeben
                        }
                        PORTD=0; // Ebene und LEDs aus
                        PORTB=0;
                    }
               }
           }
        }
       return 0;
    }
    Diesen Code hat radbruch geschrieben. Den Code gibts bei Bedarf auch noch in Bascom Basic einfach nochmal fragen.

    Für das RN-Control müssen nur die Pindefinitionen angepasst werden.

    MfG

    Torrentula
    MfG Torrentula

Ähnliche Themen

  1. 3x3x3 Rot-Grün Led Cube
    Von leibiflo im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 31.01.2011, 20:30
  2. LED Cube
    Von BlackDevil im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 13.02.2009, 16:48
  3. led-matrix 3x3x3 mit 9 port pins
    Von MSN im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 0
    Letzter Beitrag: 14.10.2008, 16:11
  4. BAscom Probleme 3x3x3 led cube
    Von Playboyben im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 07.09.2008, 17:06
  5. LED Cube 3x3x3 Softwarefrage
    Von Inkoknito im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 22.05.2008, 10:01

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •