Bascom ließt nicht Maxbild via Lookup aus

Unterbodenbeleuchtung, Pimp my room, usw.

Moderator: T.Hoffmann

Antworten
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Sa, 21.01.12, 19:06

Hallo,
Hoffe man kann mir helfen...
Ich habe mir einen 10x10x10 LED-Cube gebaut...
Er funktioniert auch super...jedoch das Auslesen des Maxbildes nicht.

Es gibt eine Mustertabelle wo die erste Zeile die maximale Anzahl der Bilder ist..also
Data 169

wenn ich diesen wert mit
Maxbild = Lookup(0 , Muster)
auslesen läuft die Animation durch und macht nach allen Bildern nur Müll
wenn ich aber es aber Vorgebe mit
Maxbild = 169
funktioniert alles ...nach dem letzten Bild fängt er wieder beim ersten an...

wenn ich den Maxbild-Wert abfrage mit
'Start:
Maxbild = Lookup(0 , Muster) 'Anzahl der Bilder holen
' Maxbild = 169 'Manuelle eingabe MAXBILD
Maxbild = Maxbild - 1
If Maxbild = 168 Then Goto Muster Weiter Else Goto Start
weiter:
macht der Würfel nix...
denke er ließt den Maxbild-Wert falsch aus....nur wieso?

versuche mal ein *.3gp video ran wo man sehen kann ab wann es nicht mehr funktioniert...und den bacom quellcode.
Dateianhänge
[ATMega32] 10x10x10 LED-Cube RUN 5.rar
(6.35 KiB) 191-mal heruntergeladen
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Sa, 21.01.12, 19:08

tja irgendwie klappt das posten des videos nicht...versuche es nochmal
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Sa, 21.01.12, 19:12

Gibt es hier Dateigrößenbeschränkungen?
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Sa, 21.01.12, 19:15

Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Sa, 21.01.12, 20:38

Hallo sungod,
welcome on board!

Es gibt hier einen 'Ändern' Knopf... 4 Posts in 10 Minuten sind nicht nötig.

So aber jetzt zum Problem...
Vermutlich ist es das Typisierungsproblem bei Lookup Tabellen in Bascom:
viewtopic.php?p=120198#p120198
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Sa, 21.01.12, 21:22

ok...knopf gesucht und gefunden...danke.

Typisierung...das heißt...?
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Sa, 21.01.12, 21:34

Hast Du den Beitrag gelesen? Typisierung heißt dem Compiler beibringen welche Größe eine Variable haben soll (1 Byte = 8 Bit, 1 Word = 16 Bit...). Beim 'Mix' von zwei unterschiedlichen Typen in einer Lookup Tabelle macht Bascom 'Mist'.
[Edit]
Hab mal in den Code geschaut...
Probier mal:
Dim Maxbild As Byte (anstatt Dim Maxbild As Word).
Könnte vielleicht schon reichen.
Ansonsten (besser) Lookup-Tabelle splitten (siehe hier: viewtopic.php?p=120198#p120198)
Gibt dann aber ein paar mehr Änderungen im code...
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Do, 26.01.12, 17:34

ok, alles klar ...funktioniert jetzt...

nun habe ich meinen code etwas umgestrickt,
habe jetzt 2 Tabellen, die eine mit den Mustern und die andere mit den Konfigurationen in der steht wieviele Muster es gibt dann zu jedem Muster jeweis die Bildanzahl und die Wiederholungen...
Nun komme ich einfach nicht weiter,
Der Würfel macht folgendes:
Die erste Nimation läuft 3x durch (so wie in Konjfigurationen angegeben)
Dann fängt die zweite an, läuft bis zur hälfte und bricht dann ab und es fängt wieder die erste an und dann geht alles aus und dann springt der watchdog an.
hier mal der code
P.S. habe die Do-Loop-Schleife mal rausgenommen damit ich sehen kann wann alle for-schleifen durchgelaufen sind.

Code: Alles auswählen

Config Watchdog = 2048                                      'Timeout 2 Sekunden (2048 ms)
Start Watchdog                                              ' Watchdog starten

' Variablen definieren *********************************************************


'Dim Maxbild As Word
Dim Bild As Word
Dim Dauer As Byte
Dim Ebene As Byte
Dim Temp As Word
Dim Offset As Word


Dim Max_anim As Byte                                        'Anzahl dex Animationen
Dim Loops As Byte                                           'Anzahl der Wiederholungen der Animation
Dim Konfig As Byte                                          'Wert aus Konfigurationstabelle
Dim Animation As Byte                                       'Schleife Animation
Dim Looping As Byte                                         'Schleife Wiederholungen der Animation
Dim Max_bild As Byte                                        'Anzahl der Bilder in einer Animation
'Laufende_animation = 1
'Maxbild = 0
'Programmstart *****************************************************************

Ea4 = 1                                                     'Enable Cube 0-AN, 1-AUS

Reset Watchdog                                              'Watchdog zurücksetzen

Konfig = 0                                                  'Zeiger an erster (0-ter) Zelle

Max_anim = Lookup(konfig , Konfiguration)                   'Anzahl aller Animationen holen
Max_anim = Max_anim - 1                                     'Weil Schleife von 0 beginnt



'Do
Konfig = 1         'Zeiger in zweite Zelle
For Animation = 0 To Max_anim                               'Schleife der aktuellen Animation
    Max_bild = Lookup(konfig , Konfiguration)               'Bildanzahl der aktuellen Animation holen
    Max_bild = Max_bild - 1                                 ' Weil Schleife von 0 anfängt


Konfig = Konfig + 1                                         'in nächste Zelle (3) springen für Loops
Loops = Lookup(konfig , Konfiguration)
Loops = Loops - 1

For Looping = 0 To Loops




      For Bild = 0 To Max_bild                              'Schleife Bilderanzahl in der aktuellen animation
         For Dauer = 0 To 5                                 'Dauer wie lange ein Bild angezeigt werden soll (5 ist ok)


                 ' T1 = Maxbild * 130
                 ' T2 = 9 * 13
                 ' T3 = T1 + T2                              'letzte Bild in der aktuellen Animation
                 ' T3 = T3 + 1                               'erstes Bild der nächsten Animation


               For Ebene = 0 To 9                           '10 Ebenen durchmultiplexen
                  Offset = Bild * 130                       'As Word (max. 65535) also max 504 Bilder!!!
                                 'sonnst As Long (max. 2147483647) also max. 16519104 Bilder ;-)
                  Temp = Ebene * 13
                  Offset = Offset + Temp




              '    Offset = Offset + 1       'kann weg wenn keine Bildanzahl an erster Stelle in der Mustertabelle steht

                  Porta = Lookup(offset , Tabelle_Animationen)        ' 1. Byte-Muster ausgeben
                  La0 = 0 : La1 = 0 : La2 = 0 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 1
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 2. Byte-Muster ausgeben
                  La0 = 1 : La1 = 0 : La2 = 0 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 2
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 3. Byte-Muster ausgeben
                  La0 = 0 : La1 = 1 : La2 = 0 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 3
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 4. Byte-Muster ausgeben
                  La0 = 1 : La1 = 1 : La2 = 0 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 4
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 5. Byte-Muster ausgeben
                  La0 = 0 : La1 = 0 : La2 = 1 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 5
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 6. Byte-Muster ausgeben
                  La0 = 1 : La1 = 0 : La2 = 1 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 6
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 7. Byte-Muster ausgeben
                  La0 = 0 : La1 = 1 : La2 = 1 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 7
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 8. Byte-Muster ausgeben
                  La0 = 1 : La1 = 1 : La2 = 1 : La3 = 0 : La4 = 0 : La4 = 1       'Latch 8
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 9. Byte-Muster ausgeben
                  La0 = 0 : La1 = 0 : La2 = 0 : La3 = 1 : La4 = 0 : La4 = 1       'Latch 9
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 10. Byte-Muster ausgeben
                  La0 = 1 : La1 = 0 : La2 = 0 : La3 = 1 : La4 = 0 : La4 = 1       'Latch 10
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 11. Byte-Muster ausgeben
                  La0 = 0 : La1 = 1 : La2 = 0 : La3 = 1 : La4 = 0 : La4 = 1       'Latch 11
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 12. Byte-Muster ausgeben
                  La0 = 1 : La1 = 1 : La2 = 0 : La3 = 1 : La4 = 0 : La4 = 1       'Latch 12
                  Offset = Offset + 1
                  Porta = Lookup(offset , Tabelle_Animationen)      ' 13. Byte-Muster ausgeben
                  La0 = 0 : La1 = 0 : La2 = 1 : La3 = 1 : La4 = 0 : La4 = 1       'Latch 13 + Ebene

                  Ea4 = 0                                   'Würfel an
                 Waitms 1
                  Ea4 = 1                                   'Würfel aus
                  Reset Watchdog                            'Watchdog zurücksetzen
               Next Ebene
            Reset Watchdog                                  'Watchdog zurücksetzen
         Next Dauer
         Reset Watchdog                                     'Watchdog zurücksetzen
      Next Bild



Next Looping








Konfig = Konfig + 1                                         'eine zelle weiter in der Konfigurationstabelle

Next Animation

Reset Watchdog                                              'Watchdog zurücksetzen



'Loop



Reset Watchdog                                              'Watchdog zurücksetzen


End
Konfiguration:
'Anzahl aller Animationen
Data 2
'Animation 1
'Bilder in dieser Animation | Wiederholungen dieser Animation
Data 28 , 2

'Animation 2
'Bilder in dieser Animation | Wiederholungen dieser Animation
Data 37 , 3



Tabelle_animationen:                                        '013 - Welle loop

'Bild 1
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00100000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00110000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01010000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01100000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01110000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B10000000
Data &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B10011111
'Bild 2
...
...
'Muster: 002 - schräg von unten links füllen und leeren
'Bild 1
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00100000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00110000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01010000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01100000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B01110000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B10000000
Data &B10000000 , &B00100000 , &B00001000 , &B00000010 , &B00000000 , &B10000000 , &B00100000 , &B00001000 , &B00000010 , &B00000000 , &B10000000 , &B00100000 , &B10010000
'Bild 2
...
...
ACHTUNG!!! falls schon jemand dran arbeitet...habe den code nochmal geändert!!!
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Do, 26.01.12, 18:25

ACHTUNG!!! falls schon jemand dran arbeitet...habe den code nochmal geändert!!!
sungod
User
User
Beiträge: 12
Registriert: Sa, 21.01.12, 18:39

Do, 26.01.12, 18:48

außerdem wiederholt er die animation 1x mehr als "berechnet"

Code: Alles auswählen

Konfig = Konfig + 1                                         'in nächste Zelle (3) springen für Loops
Loops = Lookup(konfig , Konfiguration)
Loops = Loops - 1    ' Weil Schleife von 0 anfängt
also genau so oft wie in der Tabelle steht...

Code: Alles auswählen

Konfiguration:
'Anzahl aller Animationen
Data 2
'Animation 1
'Bilder in dieser Animation | Wiederholungen dieser Animation
Data 28 , 2 '<-----------------------------------------------------------------------hier...2x Wiederholen!!!
'Animation 2
'Bilder in dieser Animation | Wiederholungen dieser Animation
Data 37 , 3
er macht es aber 3x...wieso nur?
Antworten