PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : edit: brauche einsteigerhilfe mit bascom



PhoenixTS82
11.07.2008, 15:25
hiho

Ich habe jetzt meine Controller (Mega32) + Grundschaltung fertig.
LED Matrix fertig (5x6)
Funktioniert auch.

Jetzt möchte ich gerne ein paar kleine lichterspiele programmieren.

wie kann ich denn möglichst einfache sequenzen machen ?

ich dachte daran kleine prozeduren zu schreiben für jedes "Bild"
(z.b. 1. reihe, 2.reihe, 3.reiche usw.)
mit einer Zeitangabe

das das ungefähr so aussieht

Reihe 1
waitms 100
reihe 2
weitms 100
diagonale 1
waitms 100

usw.

oder habt ihr da besere ideen ?


(zur info:) das ganze soll irgendwann mal ein 5x5x5 rgb cube werden)

vielen dank schon mal....

fhs
11.07.2008, 16:43
Hallo,


..wie kann ich denn möglichst einfache sequenzen machen ? ...

Du musst Dich entscheiden, welche Grundfunktionen (Linie/Fläche/Füllung/"Wachsen-Lassen"/"Schrumpfen-Lassen" usw.) Du implementieren möchtest, und dann alles aufeinander aufbauen, so wie es z.B. bei OpenGL (http://en.wikipedia.org/wiki/OpenGL) und vielen anderen Grafik-Paketen gemacht wird.

Viele Grüße

Fred

PhoenixTS82
11.07.2008, 21:55
ja die betonung liegt auf WIE.

soll ich für jede kombination eine procedur schreiben ?

und dann immer proceduren verknüpfen bis ich ne sequenz habe `?

edit:
um nochmal ein schritt zurück zu gehen, wie benutzte ich denn die timer fuktion dafür ?
eine einzelne led an und ausschalten ist kein problem:



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$crystal = 8000000
$baud = 9600

config porta.0 = output 'spalte
config porta.1 = output
config porta.2 = output
config porta.3 = output
config porta.4 = output
config porta.5 = output

config portc.0 = output 'reihe
config portc.1 = output
config portc.2 = output
config portc.3 = output
config portc.4 = output

config timer0 = timer , prescale = 1024
enable interrupts

portc.0 = 1

do
toggle porta.1
return



so weit so gut, aber wie kriege ich denn damit verschiede sequenzen hin,
ich brauch mal nen kleinen denkanstoß

bis jetzt sieht das noch so aus :



do
portA = &b00000001
portA = &b00000001
waitms 3
portA = &b00000010
portA = &b00000001
waitms 3
portA = &b00000100
portA = &b00000001
waitms 3
portA = &b00001000
portA = &b00000001
waitms 3
portA = &b00010000
portA = &b00000001
waitms 3
portA = &b00100000
portA = &b00000001
waitms 3
loop


wie kreige ich das denn in eine procedure/subroutine ?

oZe
12.07.2008, 13:22
Also ich stand mal genau vor dem Selben Problem wie du. Ich habe mir dazu einfach eine Funktion geschrieben, die mit parametern aufgerufen wird wie z.b. "ledan(1,2,1). Die parameter sind dann einfach die Koordinaten der einzelnen LED`s in meinem Cube gewesen. Dann kannst du schon mal einfach deine Bilder erstellen ohne immer die einzelnen Pins von hand auf high oder low setzen zu müssen. Die einzelnen Bilder würde ich wieder in einzelne Unterfunktionen abspeichern die du dann in der Hauptschleife nacheinander oder eben auf Knopfdruck abrufen kannst.
Eine einfacherere Lösung ist mir dabei leider auch nicht eingefallen.
Benutz mal einfach die Suche und such nach 3x3x3 Cube. Da sollte mein Thread noch irgendwo rumliegen.