29.08.2013 Views

Autonom robotväckarklocka med trådlös basstation - KTH

Autonom robotväckarklocka med trådlös basstation - KTH

Autonom robotväckarklocka med trådlös basstation - KTH

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

taget ger inte ett så stort grepp om vilken bild som ska visas på skärmen. Därför använder man<br />

pulsbreddsmodulering (PWM) för att lura ögat att se alla raderna samtidigt. Pulsbreddsmodulering<br />

betyder att du låter en LED blinka <strong>med</strong> så pass hög frekvens så att det mänskliga ögat inte hinner<br />

uppfatta att det blinkar. Man uppfattar inte att det blinkar därför att när du flashar en LED tillräckligt<br />

snabbt kommer skenet från LEDen fastna på din näthinna en kort stund, och om det går tillräckligt<br />

fort ser du bara ett fast sken. För att vi inte ska hinna se att det blinkar bör frekvensen lysdioden<br />

blinkar <strong>med</strong> vara högre än . Detta applicerar vi på vår LED-matris och loopar igenom alla<br />

raderna så pass fort och <strong>med</strong> en så hög frekvens så att men inte reagerar på att raderna inte visas<br />

samtidigt, och du ser en fast bild på skärmen. Programmet som har gjorts till denna modul blinkar<br />

<strong>med</strong> en delay på , alltså är . Eftersom varje rad bara är tänd en<br />

åttondel av tiden var, så betyder det att vi har en duty-cycle för varje rad på .<br />

Då man använder PWM och varje lysdiod bara lyser en åttondel av tiden kan lysdioderna klara av åtta<br />

gånger så mycket ström än när de utsätts för en konstant ström. Eftersom bara en lysdiod i varje<br />

kolumn är tänd samtidigt så går hela strömmen som kommer in i kolumnen genom den.<br />

5.2 Rita en bild på displayen<br />

Eftersom vi senare även vill kunna rulla fram en text på matrisen är det mer praktiskt att vi nu tänker<br />

oss att PORT C är kopplad till raderna istället, och PORT A är kopplad till kolumnerna. Detta för att då<br />

tänder vi kolumnen till vänster först och slutar <strong>med</strong> kolumnen till höger. När vi då skiftar texten<br />

kommer vi lättare att kunna skifta texten från höger till vänster. Så det vi gjort nu i princip är att vi<br />

har vridit på modulen ett kvarts varv <strong>med</strong>sols när vi tittar på den. Detta passar bra eftersom den<br />

ändå var tvungen att vridas ett kvarts varv <strong>med</strong>sols för att kunna kopplas in på breadboard tidigare.<br />

För att rita ut en bild på displayen tänker du alla de 64 LEDsen på matrisen som ettor och nollor, se<br />

Figur 6. Där du vill att det ska lysa en lampa sätter du en etta, alla andra lampor är nollor. Sen tittar<br />

du på varje kolumn som nu är kopplade till PORTC och skriver ut i en vektor de hexadecimala värden<br />

som de kolumner som lyser ger varje rad.<br />

Det går att skriva detta värde binärt <strong>med</strong> ettor och nollor i den ordning som du tänker dig att lampor<br />

ska vara tända och släckta. Detta kan skrivas om till det decimala systemet eftersom det binära<br />

talsystemet är en representation för tal som har talbasen två. Så första pinnen, PC0 eller PA0, får<br />

värdet , andra pinnen , tredje pinnen blir fyra, fram till sista åttonde pinnen som är<br />

värd 128. Alla pinnars binära tal, vare sig det är en etta eller nolla, multipliceras <strong>med</strong> det värde som<br />

deras 8 pinnar representeras av och adderas ihop och blir värdet som används till vektorn. Men det<br />

är behändigt att skriver om det till det hexadecimala talsystemet, eftersom det gör det enkelt att<br />

gruppera in heltal i enskilda byte. Talsystemet är ett positionssystem <strong>med</strong> de sexton siffrorna 0, 1, 2,<br />

3, 4, 5, 6, 7, 8, 9, A, B, C, D, E och F. Bokstäverna A-F representerar siffrorna 10-15. Men varje<br />

hexadecimal siffra representeras av 4 bitar. Så våra åtta rader och kolumner delas upp på två och<br />

pinnarna 4-7 representeras av ett hexadecimalt tal och pinnarna 0-3 representeras av ett annat<br />

hexadecimalt tal. Pinnarnas binära tal görs om till decimala tal och summan blir det hexadecimala<br />

talet. Till exempel så blir värdet på det första hexadecimala talet om pinne 4 och 7 är en etta och port<br />

5 och 6 en nolla .<br />

Med Figur 6 illustreras ett exempel för att rita ut en bild på LED-matrisen.<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!