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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

För att programmera detta har två olika timers används, en 16-bit timer och en 8-bit timer. I mainprogrammet<br />

är det som händer att en vektor, där vilka lampor som ska representera de två<br />

racketarna och bollen som studsar fram och tillbaka ska lysa definieras, rullas igenom och visas på<br />

skärmen. Även i main-programmet finns reset av spelet ifall någon av spelarna skulle missa. För att<br />

ändra vilka lampor som ska lysa, ifall någon av spelarna flyttar på sitt racket och för att släcka lampan<br />

där bollen lyser och tända en ny lampa för att representera att bollen har flyttat på sig, använder<br />

man de två olika timers.<br />

8-bit timern styr racketerna. Den har ett interrupt som man går in i hela tiden efter en viss<br />

specificerad tid och tittar om någon av de två spelarna trycker ner någon av sina knappar. Om de gör<br />

det ändras vilka lampor i högra eller vänstra kolumnen som lyser för att representera att racketerna<br />

har flyttat på sig. Positionen för racketerna ändras ända tills spelaren släpper sin knapp eller man har<br />

nått positionerna högst upp eller längst ner på displayen. Positionerna är fördefinierade i en vektor<br />

där ett nytt värde hämtas vid varje knapptryckning för att tända nya lampor och på så sätt flytta<br />

racketerna.<br />

16-bit timerns interrupt styr bollens studsbana. Det den gör är att efter en specificerad tid aktiveras<br />

interruptet och flyttar fram bollen en position genom att släcka lampan för den gamla positionen för<br />

bollen och tända en ny lampa som representerar den nya positionen för bollen. Det jämförs hela<br />

tiden om en LED är tänd eller släckt på positionen för nästa boll. Om den är tänd betyder det att<br />

racketen träffar bollen och spelet fortsätter och bollen studsar tillbaka åt andra hållet. Beroende på<br />

hur bollen träffar racketerna bestäms det åt vilket håll bollen ska studsa tillbaka åt, om den ska flytta<br />

sig snett diagonalt uppåt eller nedåt eller rakt fram. Om lysdioden för bollens nästa position är släckt<br />

maskas en etta in på den platsen så att den börjar lysa. Om det skulle vara så att bollen maskas in på<br />

någon av kolumnerna längst ut så betyder det att någon av spelarna har missat, och spelat startas<br />

om. Det ses även till att bollen byter håll när den når taket eller golvet så att den inte studsar utanför<br />

spelplanen.<br />

Flyttar spelarnas racketar om<br />

någon trycker ner sin knapp<br />

varje gång 8-bit timerns<br />

interrupt aktiveras<br />

Interrupt<br />

aktiveras<br />

Initiering av timers<br />

Varje kolumn börjar loopas<br />

igenom och tändas var för<br />

sig <strong>med</strong> en snabb frekvens<br />

Figur 8 Flödesdiagram för Pong<br />

11<br />

Interrupt<br />

aktiveras<br />

Träff<br />

Flyttar bollen varje gång<br />

16-bit timerns interrupt<br />

aktiveras. Ligger också och<br />

kollar om spelarna träffar<br />

eller missar bollen<br />

Miss<br />

Reset för spelplanen

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

Saved successfully!

Ooh no, something went wrong!