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.
Bascom ließt nicht Maxbild via Lookup aus
Moderator: T.Hoffmann
- Dateianhänge
-
- [ATMega32] 10x10x10 LED-Cube RUN 5.rar
- (6.35 KiB) 191-mal heruntergeladen
ok...dann hier des Direktlink: http://www.sungod-ra.de/_forumbilder/le ... fehler.3gp
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
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
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...
[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...
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.
ACHTUNG!!! falls schon jemand dran arbeitet...habe den code nochmal geändert!!!
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
...
...
außerdem wiederholt er die animation 1x mehr als "berechnet"
also genau so oft wie in der Tabelle steht...
er macht es aber 3x...wieso nur?
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
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


