SOFTWARE
 

De Assembler Code werd geschreven via Microbasic.
Hierin hebben we het hoofdprogramma geschreven.
Dit hoofdprogramma is onderverdeeld in 2 kleine loops:

  • De eerste loop leest de data die doorgestuurd is naar de microcontroller.
  • De tweede loop stuurt de data door naar de juiste ledjes.


Flow Chart

Het dataprogramma is geschreven in Matlab.
In Matlab lezen we eerst de tekening in. Vervolgens zetten we deze om in grijswaarden.
We krijgen nu een matrix met waarden tussen 0 en 256. Wie wilt kan nu een onderverdeling maken voor verschillende intensiteiten.
We krijgen in ons programma dan de zogenaamde ‘Matlab_Matrix’ die bestaat uit de getallen 0, 1, 2, 3 (4 intensiteiten bijvoorbeeld).

Door de leds te roteren, krijgen we concentrische cirkels waarop onze tekening moet afgebeeld worden.
Nu gaan we een zogenaamde cirkel op onze matrix plaatsen; het middelpunt van een dergelijke cirkel is het middelste element van de ‘Matlab_Matrix’.
In het geval dat het aantal pixels in de x- en y-richting geen even getallen zijn, zullen we een probleem hebben: het middelpunt van de cirkel valt niet samen met een element van de Matlab_Matrix. In dergelijk geval tellen we 1 bij x en/of y.
Beschouw volgend idee:

CoordCirkelMatrix

Het blauwe punt stelt normaal een element van de matrix voor, maar we nemen het even niet zo, om de projecties duidelijker te aanschouwen.
Aangezien we in pixels werken, transformeren we elke dimensie naar pixels.
We weten dat 100 pixels overeenkomen met 35,2 mm, zodat 1 mm= 1/0,352 pix.
Ook is:

Vergelijking 1

We noteren n voor het aantal hoeken.
Nu kunnen we de coördinaten bepalen van elk groene punt op de tekening (die overeenkomen met ledjes).
Merk op dat Li de afstand is tussen 2 ledjes.

Vergelijking 2 & 3

Waar mx en my de centercoördinaten zijn en pix = 0,352.

Nu komt er een cruciale matrix in het spel; de ‘Cirkelmatrix’.
Deze maken we aan door op elke hoek, elk lampje af te gaan en te zien of het lampje aan moet of niet.
Nu moet je de data doorsturen naar de controller. Er treedt echter een ander probleem op.
Als je de elementen doorloopt van Cirkelmatrix (stel dit echt als een schijf voor met bolletjes), dan begin je in het middelpunt op een bepaalde hoek, en loop je alle elementen af tot de straal. Vervolgens neem je de volgende hoek en loop je weer van middelpunt tot de straal.
Wat we nu hebben gedaan is al deze elementen achter elkaar gezet op een logische manier: eerst hoek 0, dan hoek 1 dan ….

De data sturen we door via de com-port van een computer.
De com-port initialiseren via Matlab is makkelijk: !mode com4:600,n,8,1 (meer uitleg over deze functie kan je vinden in de help file van Matlab).
Met dit commando open je de com-poort: fid = fopen('com4:','w').
Vervolgens schrijf je op deze manier data weg: fwrite(fid,Vector).
Vector is hier een parameter die je data bevat.

Klaar is Kees !

Download hier Dataprogramma en Assembler

Download hier Traxmaker file

Projectoverzicht