LED Cube 3x3x3 leicht gemacht

Anleitungen für "hausgemachte" LED Projekte

Moderator: T.Hoffmann

PortaLED
Mini-User
Beiträge: 3
Registriert: So, 26.04.09, 21:53

So, 26.04.09, 23:04

Jau super, danke.
hab noch keine Portbits benutzt da ich erst einmal nachfragen wollte.
Hättest also die volle wahl.

reicht locker nächstes wochenende wann du zeit.

Hier meinst du oder?
Offset = Bild * 5 ' Offset Berechnen, 5 Byte pro Bild in

Offset = Bild * 7 ' Offset Berechnen, 7 Byte pro Bild ändern

mfg PortaLED
Borax
Star-Admin
Star-Admin
Beiträge: 12232
Registriert: Mo, 10.09.07, 16:28

Mo, 27.04.09, 08:52

...hab noch keine Portbits benutzt...
Ist auch besser so. Ich hab grade mal kurz in den code geschaut. Im momentanen 'Setup' wird ja PORTC für die Ebenen verwendet. PORTC ist beim ATMega aber nur 6 Bit 'breit' (PC0 bis PC5; PC6=Reset - sollte man nicht verwenden, sonst kann man den Chip nur noch mit einem ST500 ('high voltage') Progger o.ä. beschreiben...
Also besser auf PORTD umstellen (ist vom Layout her IMHO ein wenig ungünstiger, aber nicht 'schlimm').
Hier schon mal der angepasste code für die 7x8 Säule:

Code: Alles auswählen

$regfile = "m8def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40
$crystal = 8000000                                          ' Achtung: Taktfrequenz per Fusebits auf 8 MHz einstellen!
'-------------------------------------------------------------------------------------------------
' Ports auf Ausgang setzen
'-------------------------------------------------------------------------------------------------
DDRB = &B11111111
DDRD = &B01111111                                         ' Ebenen auf PORTD PD0 bis PD6  
'-------------------------------------------------------------------------------------------------
' Variablen deklarieren
'-------------------------------------------------------------------------------------------------
Dim Bild As Word                                            ' Aktuelle Bildnummer
Dim Maxbild As Word                                         ' Nummer des letzten Bildes (=Zahl der Bilder in der Animation)
Dim Ebene As Byte                                           ' Ebenen-Zähler
Dim Dauer As Byte                                           ' Anzeigedauer des Bildes
Dim Temp As Byte                                            ' für Berechnungen
Dim Offset As Word                                          ' Position der zu holenden Daten
'-------------------------------------------------------------------------------------------------
' Hauptprogramm
'-------------------------------------------------------------------------------------------------
Do
Maxbild = Lookup(0 , Muster)                           ' Anzahl der gespeicherten Bilder holen
Maxbild = Maxbild - 1                                       ' 1 abziehen, da von 0 ab gezählt wird
For Bild = 0 To Maxbild                                     ' Bilder durchzählen
  For Dauer = 0 To 28                                       ' Dauer des Bildes, pro Durchlauf ca. 14 ms - also hier ca. 0,4 sek.
    Temp = 1
    For Ebene = 2 To 8                                    ' 7 Ebenen durchmultiplexen
      Offset = Bild * 7                                      ' Offset Berechnen, 7 Byte pro Bild
      Offset = Offset + Ebene                           ' Offset erhöhen
      Portd = Temp                                          ' 1. Byte-Muster ausgeben
      Portb = Lookup(offset , Muster)               ' 2. Byte-Muster ausgeben
      Shift Temp , Left , 1                               ' nächste Ebene
      Waitms 2                                                ' diese Ebene für 2 ms anzeigen
    Next Ebene
  Next Dauer
Next Bild
Loop                                                        ' Programm von vorne beginnen
End
'-------------------------------------------------------------------------------------------------
Muster:
'-------------------------------------------------------------------------------------------------
$include "muster2.txt"                                      ' Datei mit Mustern einbinden
PortaLED
Mini-User
Beiträge: 3
Registriert: So, 26.04.09, 21:53

Mo, 27.04.09, 20:59

Jau Dankeschön das ging ja schnell.
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 19.09.09, 23:29

Um es zu vervollständigen:
16x16x16=4096
Benutzeravatar
Achim H
Star-Admin
Star-Admin
Beiträge: 13067
Registriert: Mi, 14.11.07, 02:14
Wohnort: Herdecke (NRW)
Kontaktdaten:

So, 20.09.09, 03:41

Beatbuzzer hat geschrieben:16x16x16=4096
Für den Tisch ist das Teil aber nichts.
Abmessungen: 70 x 70 x 74cm, läuft mit 5,5V bei 82A, Leistung gesamt: 451 Watt.

Das könnte man aber noch steigern (nur eine Idee, gibt es noch nicht).
Led-Fernseher mit 1920 x 1920 x 1080 = 3981312000 Leds (für alle, die keine Lust zum Abzählen haben: knapp 4 Millarden).
Statt das Fernsehgerät dem Betrachter parallel gegenüber zu stellen wird einfach das Bild gedreht. Praktisch anwendbar für die Zukunft, wenn 3D-Fernsehen (ohne spezielle Brille) möglich wird.
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

So, 20.09.09, 08:08

Dieser Cube stammt von http://www.seekway.com.cn/e/index.htm. Das ist ein Prototyp, an welchem verschiedene Tests gemacht werden sollten. Wenn das komplett und erfolgreich abgeschlossen ist, wollen sie einen Würfel mit 48x48x48=110.592 Pixel (LEDs) auf den Markt bringen.

Das soll dann für erste, einfache 3D Animationen reichen.
Hier mal der Link zur Info-Seite:
http://www.cnet.de/blogs/alpha/peripher ... 6+leds.htm
Ls4
User
User
Beiträge: 19
Registriert: Mo, 10.03.08, 12:05

Di, 03.11.09, 17:34

Hi,

an soetwas bastele ich auch gerade. Nur verfolge ich einen etwas anderen Ansatz.
Mein Cube wird lediglich steuerbefehle über eine TCP/IP Leitung entgegennehmen.
Man kann sich das vereinfacht so vorstellen, dass der Controller Koordinaten und Farbdaten über eine TCP/IP Leitung bekommt und das entsprechend empfangene Gitter dann anzeigt.
Natürlich steckt da noch mehr Technik dahinter und es ist alles auch nicht ganz so einfach wie ich das beschreibe.
Momentdan bin ich noch nicht so weit. ich habe die Zuspielsoftware für den PC begonnen zu schreiben.
Aussehen tut das bisher nun so wie das Foto im Dateianhang.
Wird wohl alles noch ein wenig dauern.
Da das Ding viel können soll und ich mich nicht zu weit aus dem Fenster lehnen möchte nur mal so die Daten für den ersten geplanten Prototyp:

4*4*4 RGB
Atmega644
ENC28J60 Ethernet IC

Zuspielung der Daten läuft in Echtzeit.
Also alles was ich in der Software ändere wird in Echtzeit zum Controller übertragen und angezeigt.

Näheres gibts dann, wenn das alles erstmal soweit funktioniert.

Unter anderem habe ich noch ein paar schwierigkeiten mit der Simulator Performance. Die OpenGL Perspektive lässt sich bis zu einer Größe von 50*50*10 ordentlich bedienen. Größer wird sehr langsam auf meinem Laptop. Auf meinem Home PC hab ich das noch nicht getestet. Sollte aber dank ordentlicher Graka schneller laufen

Viele Grüße,

Tim
Dateianhänge
ledsim.jpeg
Kunibert93
Mega-User
Mega-User
Beiträge: 270
Registriert: Do, 26.03.09, 13:26
Wohnort: Niedersachsen

Di, 03.11.09, 22:19

Schaut gut aus, sowas würde mich auch mal intressieren.
Es gabt ein schickes Video bei youtube: Video
Ls4
User
User
Beiträge: 19
Registriert: Mo, 10.03.08, 12:05

Di, 03.11.09, 23:04

ja, das scheint ähnlich zu funktionieren.
Bei mir ist die Wahl aber auf ein Eigenständiges Tool gefallen, so kann ich auf dem Würfel beliebige Dinge ausgeben. OpenAL Support ist auch geplant, dann kann ich den Audio Buffer Grabben und quasi das identische tun, nur eben nicht nur mit Winamp, sondern allen anderen Playern auch. Aber getestet oder gar implementiert ist da noch nichts in dieser Richtung.
Sehr interessant fände ich mal einen Full Color Cube in 10*10*10 oder so. scheitern tuts da aber dann am µC. Das packen die Atmegas einfach nicht mehr. Die Multiplexing Frequenz wäre viel zu Hoch. Konsequenterweise sollte man dann irgendwann auf FPGAs umsteigen. Da dürften auch wesentlich größere Geräte machbar sein

Gruß Tim
Kunibert93
Mega-User
Mega-User
Beiträge: 270
Registriert: Do, 26.03.09, 13:26
Wohnort: Niedersachsen

Di, 03.11.09, 23:10

Na dann,
ich fange lieber erstmal bei AVRs an.
Ich habe mal vorhin die Software vom Fightclub herunter geladen. Schaut gut aus, vielen Dank für das Programm. Ich werde es demnächst mal testen.
Kunibert93
Mega-User
Mega-User
Beiträge: 270
Registriert: Do, 26.03.09, 13:26
Wohnort: Niedersachsen

Mi, 11.11.09, 12:24

Es fehlen bei dem ersten Beiträgen leider alle Bilder und auch einige Dateien, könnte man die noch mal hochladen?
Ich glaube kaum das der Cube noch nachgebaut wird, wenn sämtliche Daten fehlen
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Mi, 11.11.09, 15:58

Kunibert93 hat geschrieben: Ich glaube kaum das der Cube noch nachgebaut wird, wenn sämtliche Daten fehlen
Wenn jemand Hilfestellung zum mechanischen Aufbau sucht, könnte er auch in meinen Würfelthread nachsehen. Der ist zwar etwas größer, aber das Prinzip lässt sich ja übertragen.
Aber gute Software zum Muster machen und das beste Programm habe ich nicht gerade :wink: .
Kunibert93
Mega-User
Mega-User
Beiträge: 270
Registriert: Do, 26.03.09, 13:26
Wohnort: Niedersachsen

Mi, 11.11.09, 16:07

Da habe ich schon geschaut, nur wollte ich erstmal mit 3*3*3 Anfangen und dort auch die Software benutzen, das heißt ich bräuchte den Schaltplan oder sowas in der Art, wo ich sehen kann welche LED über welchen Pin angesteuert wird. Aber vllt kann man ja noch Bilder hochladen
Borax
Star-Admin
Star-Admin
Beiträge: 12232
Registriert: Mo, 10.09.07, 16:28

Mi, 11.11.09, 17:06

Das Problem ist, dass hier Bilder aus dem 'Konkurrenzforum' verlinkt sind/waren. Das einfachste für Dich wäre es, einfach dort nachzuschauen.
Kunibert93
Mega-User
Mega-User
Beiträge: 270
Registriert: Do, 26.03.09, 13:26
Wohnort: Niedersachsen

So, 29.11.09, 21:57

So ich habe einen neue Antwort erstellt und nicht editiert, damit dieses Thema mal wieder angezeigt wird. Bekommt man sonst leider nicht mit was editiert wurde.

Ich habe nochmal eine Frage, ich will meine LEDs mit 30mA betreiben, habe jetzt den Vorwiderstand passend für 5V eingelötet, also statt 390 Ohm etwas über 60 (weiß ich nicht ganz genau und Schaltung liegt nicht nebenmir), nur traue ich mich nicht den Cube anzuschließen, nicht das die LEDs doch die 12 V Betriebsspannung bekommen.
Ich weiß leider nicht wie das mit NPN Transistoren und den Spannungsregler.
Welche Spannung liegt denn zwischen µC und den Transistor an?

Da der Schaltplan gelöscht wurde lade ich den nochmal hoch.
Der Schaltplan ist nicht meiner sondern der von Fightclub oder Pesi
Der Schaltplan ist nicht meiner sondern der von Fightclub oder Pesi
Borax
Star-Admin
Star-Admin
Beiträge: 12232
Registriert: Mo, 10.09.07, 16:28

Mo, 30.11.09, 00:42

ich will meine LEDs mit 30mA betreiben
Das geht (eigentlich) nicht. Der Attiny2313 verträgt zwar pro Pin 40mA, aber insgesamt nur maximal 200mA. Bei 9x30mA kommen aber schon 270mA zusammen. Besser höchstens 20mA pro LED vorsehen. Ansonsten müsste man (eigentlich) auch für jede Säule noch einen Transistor einsetzen.
nicht das die LEDs doch die 12 V Betriebsspannung bekommen.
Da brauchst Du Dir keine Sorgen machen. Die ganze Schaltung hängt hinter einem 7805 Spannungsregler, der begrenzt die Spannung schon auf 5V. Allerdings sind 12V Betriebsspannung nicht sehr 'effizient' Besser wäre es, gleich ein (stabilisiertes!) 5V Netzteil zu verwenden und den 7805 Regler wegzulassen. So wird mehr als die Hälfte der 'reingesteckten' Energie (bei 12V und 200mA immerhin 2.5W) am 7805 verheizt.
Kunibert93
Mega-User
Mega-User
Beiträge: 270
Registriert: Do, 26.03.09, 13:26
Wohnort: Niedersachsen

Mo, 30.11.09, 20:16

Hm ok dann werde ich mal die Widerstände ändern, habe davon wohl genug von rumliegen.
Die 2Watt bzw demnächst nochweniger stören kaum, da er im moment eh nur wenige Minuten am Stück laufen wird.
Ich bin eigentlich davon Ausgangen, dass durch die Transistoren mehr Strom zulässig ist. Mein Cube flimmer im moment ziemlich. Fusebits sind aber auf 8Mhz, ist das Flimmern normal?
Borax
Star-Admin
Star-Admin
Beiträge: 12232
Registriert: Mo, 10.09.07, 16:28

Mo, 30.11.09, 23:48

Sollte eigentlich nicht flimmern. Vielleicht bist Du aber auch besonders sensibel darauf. Ggf. einfach mal den Takt erhöhen (im Bascom Code die Zeile mit Waitms 5 ändern: Waitms 3 ) und dafür die Anzahl der Wiederholungen nahezu verdoppeln (...For Dauer = 0 To 27 ändern in For Dauer = 0 To 45). Wenn es dann immer noch flimmert, dann stimmt wohl was an der Stromversorgung nicht. Für höhere Ströme an den LEDs sollte vielleicht auch der Basis-Vorwiderstand etwas kleiner gewählt werden. Ich würde mal 1KOhm statt der 2.2KOhm testen.
Punk3110
User
User
Beiträge: 22
Registriert: Fr, 21.05.10, 17:21

Sa, 22.05.10, 11:12

Moin!
Ich weiss dieser Thread is schon recht alt, aber ich hoffe das mir evtl. jemand die vb6 Dateien von Fightclubs 3x3x3 Prog schicken könnte? Wollte mir das mal angucken ob ich das vllt zu nem 5x5x5 Prog umgeschrieben kriege...:-)
Gruß Punk
Borax
Star-Admin
Star-Admin
Beiträge: 12232
Registriert: Mo, 10.09.07, 16:28

Sa, 22.05.10, 19:43

Hallo Punk3110,
Welcome on board!

Ich könnte Dir nur den vb6 source von der 5x8 Säule geben.
Wenn es Dir was hilft...
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 22.05.10, 21:39

Ich hab hier BASCOM-code von nem 4x4x4 Cube mit zweiter Tabelle zum einstellen von Anzeigedauer für jedes einzelne Bild.
Könnte ich online stellen. Nur es ist halt schon nicht mehr so original wie von Fightclub ursprünglich...
Punk3110
User
User
Beiträge: 22
Registriert: Fr, 21.05.10, 17:21

So, 23.05.10, 22:41

Ich danke euch! Ich bin gerdae dabei ein Prog in Java zu schreiben... bin schon recht weit fortgeschritten...

Bild

Uploaded with ImageShack.us


Nur hab ich das mit dem Multiplexen noch nich ganz so gerallt... :oops: kann mir das vielleicht noch mal einer erklären wie das abläuft?!

Vielen Dank schon mal!

Edit:
Ganz vergessen.... ich schreib in Assembler und nutze AVR Studio 4! :-)

bascom, c usw. werd ich wohl auch verstehen... aber ich weiss nich welche sprache das Studio mit macht!^^
Punk3110
User
User
Beiträge: 22
Registriert: Fr, 21.05.10, 17:21

Mo, 24.05.10, 11:06

Also den Quelltext hab ich da oben ja gefunden.... aber ich versteh den nich so ganz!:-)

-Maxbild = Lookup(0 , Muster) ' Anzahl der gespeicherten Bilder holen

wie holt er sich den die Bilder? Also in welcher Formatierung? Was steht dann in Maxbild?

Maxbild = Maxbild - 1 ' 1 abziehen, da von 0 ab gezählt wird
Das versteh ich gar nich!

Offset = Bild * 7 ' Offset Berechnen, 7 Byte pro Bild
Offset = Offset + Ebene ' Offset erhöhen

Was passiert hier?:-)

Portd = Temp ' 1. Byte-Muster ausgeben
Ok in Temp steht 1.... also High auf PortD setzen... Aber wieso gibt er dann ein Muster aus?

Portb = Lookup(offset , Muster) ' 2. Byte-Muster ausgeben
Shift Temp , Left , 1 ' nächste Ebene


Könnte mir das jemand in C oderso übersetzen?^^

ich hab wie gesagt ein 5x5x5 Würfel. Ansteuern will ich den mit nem ATMega32. Die 25 Anoden am "Boden" werden mit den Ports PA0-PA7, PB0-PB7,PC0-PC7 und PD0 angesteuert.

Die 5 Kathoden steuer ich mit PD1-PD5 an.
Zusammengebaut hab ich den mit folgender Anleitung:
http://www.qube-solutions.de/files/Baua ... 0Kubus.pdf


Danke schon mal!
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Mo, 24.05.10, 19:27

So, in C übersetzen kann ichs dir nicht, aber ich kann dir das BASCOM in Normaldeutsch erklären :wink:

Maxbild = lookup

Wenn du eine "Muster.txt" im Programm eingefügt hast, dann steht ganz oben in der Tabelle eine Zahl, und zwar die Anzahl der Bilder. Diese Zahl wird mit dem o.g. Befehl in die Variable "Maxbild" geschrieben. Anders ausgedrückt steht da also, wenn es z.B. 20 Bilder sind:
Maxbild = 20

Jetzt wird im nächsten Schritt 1 abgezogen:

Maxbild = Maxbild - 1

Das ergibt:

Maxbild = 19

Das ist nötig, weil das Programm 0-19 zählt. 0 ist also auch ein Wert. Deshalb muss 1 abgezogen werden, denn sonst wäre es ja 0-20 und das wären 21 Bilder.

Offset=bild x 7

Dort wird in die Variable "Offset" die Anzahl an Schritten geschrieben die für ein Bild nötig sind. Wenn also das nächste Bild angezeigt werden soll, dann muss in der Tabelle 7 Schritte weiter gegangen werden.

Für genaueres muss ich mir den Code selbst erst nochmal ansehen. Ich hoffe aber, dass ich dir so schon ein Stück weiter geholfen hab.
Antworten