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
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