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.

}<br />

}<br />

}<br />

}<br />

else<br />

// 16-bit timer interrupt<br />

ISR(TIMER1_COMPA_vect){<br />

// Bollen i Pong<br />

if(mode == 1){<br />

}<br />

P2l_intryckt = 0;<br />

placering[pad_right] = position[PLAYER_1]; // Om racketen har flyttats så ändras<br />

placering[pad_left] = position[PLAYER_2]; // lampor som lyser.<br />

sakta_ner_counter = 0;<br />

}<br />

if(stopp > 0){<br />

stopp--; // Om någon missat avbryts interrupten ett tag tills stopp = 0<br />

}<br />

else { // Inget avbrott<br />

placering[boll] = 0; // Nollställ efter bollen innan<br />

// Bollens skickas fram och tillbaka mellan padsen<br />

boll+=dir_pos; // Ändrar position för bollen<br />

if(boll==pad_left) // Längst ut till vänster.<br />

dir_pos = -1; // Höger<br />

if(boll==pad_right) // Längst ut till höger<br />

dir_pos = 1; // Vänster<br />

// Bestämmer nästa position för bollen (upp/ner/rakt på)<br />

if(dir_hojd==0) // Bollen kommer rakt på<br />

pos_boll = temp_boll; // Fortsätter på samma nivå<br />

if(dir_hojd==1) // Boll kommer nerifrån<br />

pos_boll = temp_boll*2; // Fortsätt 45 grader upp;<br />

if(dir_hojd==255) // Boll kommer uppifrån<br />

pos_boll = temp_boll/2; // Fortsätt 45 grader ner;<br />

// Tittar om det är träff eller miss<br />

if(pos_boll & placering[boll]){ // Den lyser – träff<br />

// Bollen får tillbaka föregående värden<br />

boll = t_boll;<br />

pos_boll = temp_boll;<br />

if(dir_hojd == 0)<br />

dir_hojd = hall[rand() % 1]; // Ändrar riktning om bollen kommer rakt på<br />

}<br />

else{ // Den är släckt<br />

placering[boll] |= pos_boll; // Maska in 1:a så att bollen lyser på ny position<br />

if(boll == pad_left || boll == pad_right){ // Det lyser inte på bollens pos längst ut<br />

miss = 1;<br />

}<br />

}<br />

if(boll==(pad_left-1) || boll == (pad_right+1)){ // Anta träff nästa gång<br />

// Kollar hur bollen ska studsa efteråt vid träff<br />

// Höger<br />

24

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

Saved successfully!

Ooh no, something went wrong!