PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED Cube 3x3x3 Softwarefrage



Inkoknito
21.05.2008, 16:55
hallo,

ich hab mir ein LED Cube zusammengelötet (3x3x3) mit einem Tiny2313 dran.
In den Ebenen habe ich die Kathoden zusammengefasst und in den Spalten die Anoden also insgesamt 12 anschlüsse.
Somit ist ja klar das ich verschiedene Ports nutzen muss.

So nun zum Porgramm ich hab mal was zu testen geschrieben

und zwar:


$regfile "attiny2313.dat"
$crystal = 1000000

Config Portd = Output
Config Portb = Output
Config Porta = Output

Ebene1 Alias Portd.1
Ebene2 Alias Porta.1
Ebene3 Alias Portd.0

Lo Alias Porta.0
Lm Alias Portd.6
Lu Alias Portd.2
Mo Alias Portb.1
Mm Alias Portd.3
Mu Alias Portb.0
Ro Alias Portd.4
Rm Alias Portb.2
Ru Alias Portd.5


Do
Ebene1 = 0
Ebene2 = 1
Ebene3 = 1
Lo = 1
Mo = 0
Ro = 0
Waitms 100
Ebene1 = 0
Ebene2 = 1
Ebene3 = 1
Lo = 0
Mo = 1
Ro = 0

das funktioniert auch, aber so kann man das ja nich schreiben, viel zuu umständlich : )

so hab ich mir gedacht das ich eine Data Tabelle dafür schreibe, aber nun scheitere ich daran das ich den Cube an verschiedenen Ports habe?

könntet ihr mir vieleicht einen kleinen Gedankschups geben wie man so was progt?

besten dank schon mal dafür^^

mycroc
21.05.2008, 19:02
vieleicht hilft dir ja die kleine idee
Dim A As Byte
...
Porta.0 = A.0
Portd.6 = A.1
Portd.2 = A.2
Portb.1 = A.3
Portd.3 = A.4
Portb.0 = A.5
Portd.4 = A.6
Portb.2 = A.7

Inkoknito
21.05.2008, 19:38
ehm irgend wie funzt das nich : ( oder muss ich da noch was machen?

mycroc
21.05.2008, 19:59
es ist einfacher zu antworten wenn man deinen code kennt!

Inkoknito
21.05.2008, 20:02
weist du wie man das in eine tabelle dan schreibt?

also das mit dem Date und &00010101
halt über 3 ports das is mein Problem....

das raff ich einfach nicht.

aber trotzdem danke dir : )

mycroc
21.05.2008, 20:24
hm,
Lookup -> Bascom hilfe wir helfen

mycroc
21.05.2008, 20:31
noch eine hilfe(ist nur theoretisch habe ich noch nicht getestet)

A = Lookup(Stelle_in_Tabelle,Label)

Label:
Data &B0001100,&B00011111,&B11001100
^ ^ ^
Stelle_in_tabelle 0 1 2

Inkoknito
21.05.2008, 21:01
ich hab das mal so geschrieben

kommt das der sache näher?


ich hab das buch von Claus Kühnel da stand das so ungefähr drinne allerdings mit einer 7 segmentanzeige. aber das prinzip ist ja das selbe.

es haut noch nich ganz hin, im buch is ja die anzeige an einem port und da staht dann Portb = X(i) , das kann ich ja nicht schreiben weil ich ja mehere ports habe *bruml*

das mit der Tabelle klappt dadurch noch nicht ganz


mfg



$regfile "attiny2313.dat"
$crystal = 1000000
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40


Config Portd = Output
Config Portb = Output
Config Porta = Output


Porta.0 = A.0 'Linksoben
Portd.6 = A.1 'Linksmitte
Portd.2 = A.2 'Linksunten
Portb.1 = A.3 'Mitteoben
Portd.3 = A.4 'Mittemitte
Portb.0 = A.5 'Mitteunten
Portd.4 = A.6 'Rechtsoben
Portb.2 = A.7 'Rechtsmitte
Portd.5 = A.8 'Rechtsunten
Portd.1 = A.9 'Ebene1
Porta.1 = A.10 'Ebene2
Portd.0 = A.11 'Ebene3

Dim B As Word
Dim A As Word
Dim X(4) As Word


Restore Data1

For B = 1 To 4
Read X(i)
Next


Do


For B = 1 To 4
A = X(i)
Waitms 500
Next


Loop

Data1:

Data &B00000000111 , &B10000000011 , &B01000000011 , &B00100000011

mycroc
22.05.2008, 09:01
die zuweisung solten schon mit in der Schleife stehen!
....
Do

For B = 1 To 4
A = X(i)
Porta.0 = A.0 'Linksoben
Portd.6 = A.1 'Linksmitte
Portd.2 = A.2 'Linksunten
Portb.1 = A.3 'Mitteoben
Portd.3 = A.4 'Mittemitte
Portb.0 = A.5 'Mitteunten
Portd.4 = A.6 'Rechtsoben
Portb.2 = A.7 'Rechtsmitte
Portd.5 = A.8 'Rechtsunten
Portd.1 = A.9 'Ebene1
Porta.1 = A.10 'Ebene2
Portd.0 = A.11 'Ebene3
Waitms 500
Next


Loop