Mal wieder LED-Cube

  • Super! - aber ich würde mir das echt sparen, dass das Ding den Steuercode mit reinschreibt, weil das ist ja unabhängig voneinander - man kann ja den Steuercode z.B. auch weiterentwickeln und trotzdem die Daten behalten usw.


    Das mit der Schleife, dass man da oben die zahl der Programmschritte angeben muss, ist blöd - bei mir (Assembler) wird ein "Flag" abgefragt, also wenn die Dauer 0 ist (was man ja so nie braucht), dann weiss er, dass das Programm von vorne beginnt...


    das könnte man ganz easy in den Bascom-Code auch noch einbauen - ich weiß nur nicht, ob's da sowas wie damals bei Commodore-Basic gibt, wie "If Dauer = 0 then Goto sowieso" - also einfach das Programm in ner Endlosschleife, wenn die Dauer "0" ist dann Programmzähler zurücksetzen und Daten nochmal holen....

    So hatte ich das ja auch erst vor, aber dann werd ich den code halt erstmal nur für den asm machen, den man dann includet.

  • Hey, Wow, schöne Bilder, schöner Cube, jetzt sogar in ner Galerie! ...aber wer hat denn Montag früh um 3 Zeit für sowas...?!?! :P


    Das mit dem Traffic ist schon so ne Sache - OK, die Bilder sind jetzt kleiner, aber liegen ja immer noch auf Deinem Server.... Ich habe mir das bei mir auch schon überlegt, in meinem Würfel-Thread ist ja auch ein Video mit 5 MB drin, der wurde jetzt in nicht mal 2 Wochen über 1.200 mal aufgerufen, wenn da jeder das Video angesehen hat, na dann gute Nacht Trafficlimit! - Sollte mir evtl. doch mal nen Youtube-Account zulegen...


    Wie meinst Du das?

    So wie ich's geschrieben habe! :D - wie gesagt, ändere erst mal einfach diese Schleife auf For Ebene = 0 to 7, nichts weiter, und schau' was passiert!


    Die SW spielt dann in einem Durchlauf gleich 2 Bilder in schnellem Wechsel direkt hintereinander ab - LEDs, die in beiden Bildern an sind, sind die ganze Zeit an, also normal hell - LEDs, die nur in einem Bild an sind, leuchten nur für die Hälfte der Zeit, sind also halb so hell.... und wie man das dann gezielt macht, welche LED wie hell, das wird Dir dann schon klar, wenn Du das mal ausprobierst...


    Und was anderes, mein Kumpel hat sich mit dem Cube Virus angesteckt. Er würde das ganze aber in C machen. Damit scheide ich als Helfer aus. Machst Du es in C? Wenn ja, kannst du mir bitte Dein Prog zukommen lassen?

    C kann ich nicht - Ich programmiere hier ja auch nicht "auf Auftrag" :P, das Bascom-Programm habe ich halt mal gemacht, weil's mich selbst interessiert hat, wie das geht...


    Aber wenn Dein Kumpel C kann, dann zeig' ihm doch einfach mal das Bascom-Programm - das dürfte für ihn kein Problem sein, das in C zu übersetzen - Bascom ist ja echt so einfach, wenn man irgendwie Programmieren kann, steigt man bei meinem Programm gleich durch, ist ja auch gut kommentiert....

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Tach auch...

    Zitat

    ...aber wer hat denn Montag früh um 3 Zeit für sowas...?!?! :P

    Bin halt ein Nachtmensch. Ich sollte bestimmt mal eine Eule oder ein Uhu werden.

    Zitat

    Das mit dem Traffic ist schon so ne Sache

    Ich passe da auf wie ein Heftelmacher. Gucke jeden Tag nach.

    Zitat

    So wie ich's geschrieben habe! :D - wie gesagt, ändere erst mal einfach diese Schleife auf For Ebene = 0 to 7, nichts weiter, und schau' was passiert!

    Gut mach ich mal. Hab ja jetzt einen Cube den man auch bei Tageslicht gut erkennt.

    Zitat

    Aber wenn Dein Kumpel C kann, dann zeig' ihm doch einfach mal das Bascom-Programm - das dürfte für ihn kein Problem sein, das in C zu übersetzen

    Hab ich ihm auch gesagt. Das schlimme daran ist das er Informatikstudent ist und nächsten Monat fertig ist.


    Schönen Tag allen

  • Guten Abend


    So da bin ich schon wieder. :P


    Habe die erste Version meines Cube-Editors fertiggestellt. Er ist unter VB6 erstellt. Die Ausgabe-Datei die er erstellt liegt im Hauptverzeichniss. Bei mir also F:/. Das Prog ist auf 5x5x5 und meine Verkabelung ausgelegt. Wer will kann Ihn sich mal angucken.
    Die Sourcen sind mit dabei.


    Cube-Editor

  • Hallo an alle


    Ich habe eine für mich elegante Lösung gefunden bestimmte Bilder zu wiederholen. Und zwar nutze ich die zwei freien Ausgänge von PortB.


    Code
    Data &B10001000 , &B00000000 , &B01000010 , &B00111110  '2. Bild  Ebene 1
    Data &B10001000 , &B00000000 , &B00000010 , &B00111101  '2. Bild  Ebene 2
    Data &B10001000 , &B00000000 , &B00000010 , &B00111011  '2. Bild  Ebene 3
    Data &B10001000 , &B00000000 , &B00000010 , &B00110111  '2. Bild  Ebene 4
    Data &B10001000 , &B00000000 , &B00000010 , &B00101111  '2. Bild  Ebene 5


    Data &B10001000 , &B00000000 , &B01000010 , &B00111110 '2. Bild Ebene 1


    Das Rot makierte ist bei mir PortB. Ich setze dort den Pin6 auf eins und makiere damit den Startpunkt für die Wiederholung.


    Code
    Data &B00000000 , &B00001000 , &B00000000 , &B00011110  '5. Bild  Ebene 1
    Data &B00000011 , &B10010100 , &B00111000 , &B00011101  '5. Bild  Ebene 2
    Data &B11111100 , &B01100011 , &B00000111 , &B11111011  '5. Bild  Ebene 3
    Data &B00000011 , &B10010100 , &B00111000 , &B00010111  '5. Bild  Ebene 4
    Data &B00000000 , &B00001000 , &B10000000 , &B00001111  '5. Bild  Ebene 5


    Data &B00000000 , &B00001000 , &B10000000 , &B00001111 '5. Bild Ebene 5


    Und das Ende mit Pin7.


    Das ganze wird dann hier ausgewerdet.


    If Portb.6 = 1 Then
    Anzahl = 3
    Bildstart = Bild
    Elseif Portb.7 = 1 Then
    Bildstop = Bild
    End If



    Gut die Anzahl ist fest, aber immerhin.

  • ja, ist doch schon mal was!


    aber wie gesagt: die Anzahl ist fest - bei der anderen Methode nicht.


    Und wenn jetzt z.B. Dein Startbild (nur als Beispiel) eine Fläche oben ist, und Du brauchst die Fläche oben für eine andere Animation, die sich aber nicht wiederholen soll, auch wieder, dann musst du das *selbe Bild* (nur ohne Bit PB6 gesetzt) nochmal im Speicher ablegen - bei der anderen Methode nicht...


    was jetzt da speichersparender ist, hängt wohl auch sehr von der Art der Show ab: Wenn Du oft Widerholungen, aber so gut wie nie gleiche Bilder in versch. Animationen hast, könnte Deine Methode sogar sparsamer sein.


    Soll jetzt alles keine "Kritik" sein - im Gegenteil: schön, dass Du das programmiert hast, da lernt man am meisten, indem man sich sowas selbst ausdenkt... :thumbup:

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Danke für die Blumen, Pesi


    Ist mir letzte Nacht im Bett eingefallen. Da hab ich es zu Papier gebracht und heute Übertragen. Und es ging fast auf einmal. Nur ein klizekleiner Fehler. Bin ich schon ein bisschen Stolz drauf.
    Wenn Interesse an einem neue Video besteht, sagt bescheid.


    Pesi, nochwas. So richtig hab ich Deine Methode nicht begriffen. ...Schäm... ;(

  • Hallo zusammen!


    Ich habe mir vo ein paar Wochen auch einen 5x5x5 Cube gebastelt.
    das war das erste mal, dass ich überhaupt was mit Microcontrollern gemacht, deswegen sieht mein Code warscheinlich auch anders aus, ihr könnt ihn euch ja mal anschaun und was dazu sagen, ihr habt da sicherlich mehr Ahnung als ich. Zum Muster erstellen hab ich mir ne Excel Tabelle zusammengeschustert weil ich nicht wirklich programmieren kann, aber es funktioniert für meine Bedürfnisse einwandfrei.


    schönen Gruß

  • Hallo Bösewicht


    Ich habs mal angeguckt und versucht auf meinem 5x5x5 laufen zu lassen. Allerdings hast Du Deinen anders angeschlossen. Wenn Du Lust hast kannst Du da Dein Prog mal auf meine Belegung anpassen? Und groß ist es auch nach dem kompilieren (20KByte).Kann es sein das Du PWM nutzt?

  • Ich habs mal probiert und jetz müsste es bei dir gehen, ansonsten musst du die belegung selber noch anpassen


    Code
    E1 Alias Porta.0 'Ebene1
    E2 Alias Porta.1 'Ebene2
    E3 Alias Porta.2 '...
    E4 Alias Porta.3
    E5 Alias Porta.4



    bei mir ist Ebene1 die obere und Ebene5 die untere, kann also sein, dass die pins jetz genau verkehrt herum sind



    die spalten sind bei mir wie auf dem Numpad der Tastatur angeordnet also


    21 22 23 24 25
    16 17 18 19 22
    11 12 13 14 15
    6 7 8 9 10
    1 2 3 4 5


    ich habs jetz schonmal so weit ich konnte auf deinen Cube abgestimmt, aber schau nochmal drüber ob alles richtig ist


    für die Animationen habe ich für jede Ebene eine Long Variable, in der 25 Bits den Zustand jeder der 25 Leds auf einer Ebene angeben. Also 5 Long Variablen für jedes Bild, weswegen der Code warscheinlich auch recht groß ist, aber ich wusste es nicht besser. Und kein Pwm bis jetzt, nur recht viele Bilder. Probiers mal aus und geb ne Rückmeldung


    schönen Gruß

  • Hallo Bösewicht :cursing:


    Habe das was Du angehängt mal probiert. Sah aber nicht so toll aus. Hatte allerdings im Vorfeld schon mal mit Deinem Prog probiert. Und das sah ganz gut aus. Ich habs mal angehängt.


    Kannst ja mal versuchen meines anzupassen. Oder ich mach es für Dich. Brauche aber Deine genaue belegung. Sonst sieht es blöd aus. Weil Zahen und Buchstaben.

  • Hi Bösewicht,


    das ist natürlich auch ein interessanter Code - im Prinzip macht der ja das selbe, einfach Bitmuster an Ports ausgeben, nur dass bei mir das Ebenen-Bit schon mit im gespeicherten Muster drin ist, und bei Dir extra erzeugt wird...


    Vorteil bei mir: man spart sich diese Erzeugung - Vorteil bei Dir: man kann auch Ebenen mit gleichem Inhalt einfach kopieren...


    Dass Dein Code wesentlich größer wird, hat 2 Ursachen: 1. Du hast einfach mehr Bilder drin als Tipfix im Moment und 2. die Bilder belegen bei Dir mehr Speicher. Bei "uns" sind das ja reine "Data"-Zeilen, d.h. jedes Bild belegt exakt 20 Byte im Speicher - bei Dir kommt ja zu diesen 20 Byte noch 5 mal die Anweisung (Programmcode) "Ebenexy=" dazu, und die braucht jeweils auch noch ein paar Byte... so wie ich Bascom kenne (das wäre hier aber in Assembler auch nicht viel anders), *wesentlich* mehr als die Daten selbst :D - Die Anweisung Ebene 2 = Ebene 1 frisst wahrscheinlich sogar noch mehr Speicher, als die Daten direkt zuzuweisen...


    Tipfix: zur Erklärung nochmal: die Version 2 unterscheidet sich nicht wesentlich von der Version 1 - bei der ersten wird einfach die "Bild"-Variable stur hochgezählt, also alle Bilder im Speicher der Reihe nach ausgegeben. Brauchst Du ein Bild noch mal, musst Du es auch komplett nochmal ablegen.


    Bei der 2. Version wird die "Bild"-Variable auch aus einer Tabelle geholt (diese wird mit "PGM_Zaehler" durchgezählt) - d.h. Du hast wahlfreien Zugriff auf die Bilder im Speicher: wenn Du ein bestimmtes Muster wiederholt brauchst, musst Du es nicht mehrmals ablegen, sondern kannst immer wieder (mit dem selben "Bild"-Wert) darauf zugreifen - und praktischerweise auch noch jedesmal die Anzeigedauer dazu angeben...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Hallo Pesi

    Zitat

    1. Du hast einfach mehr Bilder drin als Tipfix im Moment

    Na darüber lässt sich streiten. Im Moment hab ich 445 Bilder. Macht bei mir 9.9 KByte. Und bei Bösewicht sind schon 19 KByte.

    Zitat

    Bei der 2. Version wird die "Bild"-Variable auch aus einer Tabelle geholt (diese wird mit "PGM_Zaehler" durchgezählt

    Muss ich nochmal gucken.

  • Na, das "im Moment" bezog sich ja auch auf *den Moment* als ich die SW das letzte Mal gesehen habe... :D


    aber wie schon gesagt, die Anweisung "Ebene =" bläst das so auf. Bascom speichert das ja im RAM, also Byte in's Register, Zeiger ausrechnen, Byte in's Ram speichern... da kann's schon gut sein, dass ein Bild bei Böseweicht deutlich mehr als 100 Byte im Flash belegt...


    ja, guck noch mal wegen der V2 - ist ganz einfach zu verstehen - die Bildnummer/-Dauer wird auf die selbe Methode aus dem Speicher geholt, wie dann die Bilddaten...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Morgen


    Pesi

    Zitat

    ja, guck noch mal wegen der V2 - ist ganz einfach zu verstehen - die Bildnummer/-Dauer wird auf die selbe Methode aus dem Speicher geholt, wie dann die Bilddaten...

    Ja, ist klar wie's geht. Und geht ja auch.
    Allerdings wiederhole ich in einem Rutsch ganze Sequenzen(Animationen). Da finde ich meine Methode garnicht so schlecht.

  • Hallo,


    Hab grade wenig zeit, aber morgen Abend oder am Montag werde ich den Code von tipfix mal versuchen auf meinen Cube umzuändern.
    Ich werd auch ein Video von Meinem machen, damit ihr mal seht wie es aussehen "sollte".
    Und was Pesi geschrieben hat klingt sehr einleuchtend, wobei noch hinzukommt, dass long Variablen 32 Bit haben, ich aber nur 25 benutze, was sich dann doch summiert. Aber wenns klappt, werde ich versuchen meine Animationen in euren Code zu übertragen und den dann, sofern ich darf, weiter verwenden.


    schönen Gruß

  • Hallo

    Zitat

    Aber wenns klappt, werde ich versuchen meine Animationen in euren Code zu übertragen und den dann, sofern ich darf, weiter verwenden.

    Natürlich darfst Du das. Ich würde mal behaupten der steht unter GPL.

  • Schick :!:


    Eine Echtzeituhr und das sogar mit Datum :thumbup:


    Ich verzweifel gerade an einer DCF-Uhr...


    Na ja Uhrzeit geht so passabel aber noch ohne Fehlererkennung und von nem Datum reden wir mal noch überhaupt nicht ?(

  • tipfix: sehr schick. Wenn du mal wieder was mit deinem Cube machen möchtest, mir kam da so eine Idee:


    Wie wäre es wenn du einen richtigen Würfel bauen würdest? Also das ganze noch mit einem Taster versehen, der dann eine Zufallszahl erzeugt zwischen 0 und 23 und dann eins von 24 Mustern anzeigt. Wieso 24? Bei jeder der 6 Zahlen die oben liegt gibt es noch genau 4 Möglichkeiten den Würfel um die vertikale Achse zu drehen, dann sieht das ganze nciht so statisch aus.
    Was hälst du davon? Leider is das ganze nur ab 5x5 und bei ungraden Zahlen möglich. Die kompletten äußeren LEDs würden immer an bleiben und mit den je 9 LEDs auf allen 6 Seiten kannst du dann die Zahlen modellieren.


    Kanwas: DCF-Uhr ist garnicht mal soo schwer, wenn du einmal die Signale entschlüsselt hast und an diesem einen Bit ausgerichtet hast. Wir haben sowas mal im Praktikum gemacht, da wurde uns das Framework allerdings schon vorgegeben, die Datenbits standen also alle schon brav in einem Array und um die Ausgabe auf dem LCD brauchten wir uns auch nicht kümmern :thumbup: