Pong program with multiple dependencies to test pgen
Dependencies: Beep C12832 LM75B MMA7660 mbed
main.cpp@0:3bf62dd01ca9, 2015-08-14 (annotated)
- Committer:
- sarahmarshy
- Date:
- Fri Aug 14 14:52:33 2015 +0000
- Revision:
- 0:3bf62dd01ca9
Example of program with multiple dependencies to test pgen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sarahmarshy | 0:3bf62dd01ca9 | 1 | #include "mbed.h" |
sarahmarshy | 0:3bf62dd01ca9 | 2 | #include "LM75B.h" |
sarahmarshy | 0:3bf62dd01ca9 | 3 | #include "C12832.h" |
sarahmarshy | 0:3bf62dd01ca9 | 4 | #include "MMA7660.h" |
sarahmarshy | 0:3bf62dd01ca9 | 5 | #include "Beep.h" |
sarahmarshy | 0:3bf62dd01ca9 | 6 | |
sarahmarshy | 0:3bf62dd01ca9 | 7 | |
sarahmarshy | 0:3bf62dd01ca9 | 8 | // Using Arduino pin notation |
sarahmarshy | 0:3bf62dd01ca9 | 9 | C12832 lcd(D11, D13, D12, D7, D10); |
sarahmarshy | 0:3bf62dd01ca9 | 10 | //Accelerometer |
sarahmarshy | 0:3bf62dd01ca9 | 11 | MMA7660 MMA(D14,D15); |
sarahmarshy | 0:3bf62dd01ca9 | 12 | //Temp Sensor |
sarahmarshy | 0:3bf62dd01ca9 | 13 | LM75B sensor(D14,D15); |
sarahmarshy | 0:3bf62dd01ca9 | 14 | //Speaker |
sarahmarshy | 0:3bf62dd01ca9 | 15 | Beep beeper(D6); |
sarahmarshy | 0:3bf62dd01ca9 | 16 | //Red LED |
sarahmarshy | 0:3bf62dd01ca9 | 17 | PwmOut r (D5); |
sarahmarshy | 0:3bf62dd01ca9 | 18 | //Green LED |
sarahmarshy | 0:3bf62dd01ca9 | 19 | PwmOut g (D9); |
sarahmarshy | 0:3bf62dd01ca9 | 20 | |
sarahmarshy | 0:3bf62dd01ca9 | 21 | void pong(int ball_x, int y_pos){ |
sarahmarshy | 0:3bf62dd01ca9 | 22 | //bottom of the paddle |
sarahmarshy | 0:3bf62dd01ca9 | 23 | int bottom_y = y_pos+10; |
sarahmarshy | 0:3bf62dd01ca9 | 24 | //ball's y_location |
sarahmarshy | 0:3bf62dd01ca9 | 25 | int ball_y = 15; |
sarahmarshy | 0:3bf62dd01ca9 | 26 | //ball moving right |
sarahmarshy | 0:3bf62dd01ca9 | 27 | bool right = true; |
sarahmarshy | 0:3bf62dd01ca9 | 28 | //ball moving down |
sarahmarshy | 0:3bf62dd01ca9 | 29 | bool ball_down = true; |
sarahmarshy | 0:3bf62dd01ca9 | 30 | while(true) { |
sarahmarshy | 0:3bf62dd01ca9 | 31 | //refresh the position of ball and paddle |
sarahmarshy | 0:3bf62dd01ca9 | 32 | lcd.line(120, y_pos, 120, bottom_y, 1); |
sarahmarshy | 0:3bf62dd01ca9 | 33 | lcd.fillcircle(ball_x, ball_y, 3, 1); |
sarahmarshy | 0:3bf62dd01ca9 | 34 | wait(.03); |
sarahmarshy | 0:3bf62dd01ca9 | 35 | lcd.fillcircle(ball_x, ball_y, 3, 0); |
sarahmarshy | 0:3bf62dd01ca9 | 36 | lcd.line(120, y_pos, 120, bottom_y, 0); |
sarahmarshy | 0:3bf62dd01ca9 | 37 | |
sarahmarshy | 0:3bf62dd01ca9 | 38 | //check if the ball has hit the paddle |
sarahmarshy | 0:3bf62dd01ca9 | 39 | if(ball_x+3 == 120 && ball_y>y_pos && ball_y<bottom_y && right){ |
sarahmarshy | 0:3bf62dd01ca9 | 40 | right = false;//now it is moving left |
sarahmarshy | 0:3bf62dd01ca9 | 41 | beeper.beep(500, 0.25);//beep |
sarahmarshy | 0:3bf62dd01ca9 | 42 | r = 1.0;//turn off the red LED |
sarahmarshy | 0:3bf62dd01ca9 | 43 | g = 0.0;//turn on green |
sarahmarshy | 0:3bf62dd01ca9 | 44 | } |
sarahmarshy | 0:3bf62dd01ca9 | 45 | //check if the ball is behind the paddle |
sarahmarshy | 0:3bf62dd01ca9 | 46 | if(ball_x >= 124){ |
sarahmarshy | 0:3bf62dd01ca9 | 47 | right = false;//now it is moving left |
sarahmarshy | 0:3bf62dd01ca9 | 48 | beeper.beep(500, 0.25);//beep |
sarahmarshy | 0:3bf62dd01ca9 | 49 | g = 1.0;//turn off green LED |
sarahmarshy | 0:3bf62dd01ca9 | 50 | r = 0.0;//turn on red |
sarahmarshy | 0:3bf62dd01ca9 | 51 | } |
sarahmarshy | 0:3bf62dd01ca9 | 52 | //if it hits the left wall |
sarahmarshy | 0:3bf62dd01ca9 | 53 | if(ball_x<=3){ |
sarahmarshy | 0:3bf62dd01ca9 | 54 | right = true; |
sarahmarshy | 0:3bf62dd01ca9 | 55 | } |
sarahmarshy | 0:3bf62dd01ca9 | 56 | //if it hits the top or bottom |
sarahmarshy | 0:3bf62dd01ca9 | 57 | if(ball_y<=3 || ball_y >= 29){ |
sarahmarshy | 0:3bf62dd01ca9 | 58 | ball_down = not(ball_down);//reverse y direction |
sarahmarshy | 0:3bf62dd01ca9 | 59 | } |
sarahmarshy | 0:3bf62dd01ca9 | 60 | if(right){ |
sarahmarshy | 0:3bf62dd01ca9 | 61 | ball_x+=2;//increase ball's x pos by 2 if moving right |
sarahmarshy | 0:3bf62dd01ca9 | 62 | } |
sarahmarshy | 0:3bf62dd01ca9 | 63 | else{ |
sarahmarshy | 0:3bf62dd01ca9 | 64 | ball_x-=2;//decrease vy 2 if left |
sarahmarshy | 0:3bf62dd01ca9 | 65 | } |
sarahmarshy | 0:3bf62dd01ca9 | 66 | if(ball_down){ |
sarahmarshy | 0:3bf62dd01ca9 | 67 | ball_y++;//move ball's y pos down 1(higher y value's toward bottom of LCD) if the ball is moving down |
sarahmarshy | 0:3bf62dd01ca9 | 68 | } |
sarahmarshy | 0:3bf62dd01ca9 | 69 | else{ |
sarahmarshy | 0:3bf62dd01ca9 | 70 | ball_y--;//ball's y up 1 if ball moving up |
sarahmarshy | 0:3bf62dd01ca9 | 71 | } |
sarahmarshy | 0:3bf62dd01ca9 | 72 | //Check if accelerometer is tilted away and the paddle hasn't hit the top |
sarahmarshy | 0:3bf62dd01ca9 | 73 | if(MMA.x() > 0 && y_pos > 0){ |
sarahmarshy | 0:3bf62dd01ca9 | 74 | y_pos-=3;//top of paddle moved up by 3 |
sarahmarshy | 0:3bf62dd01ca9 | 75 | bottom_y = y_pos+10;//set the bottom of the paddle to 10 below top |
sarahmarshy | 0:3bf62dd01ca9 | 76 | } |
sarahmarshy | 0:3bf62dd01ca9 | 77 | else if(MMA.x() < 0 && y_pos < 21){//Check if accelerometer is tilted toward and the paddle hasn't hit the bottom |
sarahmarshy | 0:3bf62dd01ca9 | 78 | y_pos+=3;//top of paddle moves down 3 |
sarahmarshy | 0:3bf62dd01ca9 | 79 | bottom_y = y_pos+10;//bottom of the paddle is 10 pixels below top |
sarahmarshy | 0:3bf62dd01ca9 | 80 | } |
sarahmarshy | 0:3bf62dd01ca9 | 81 | } |
sarahmarshy | 0:3bf62dd01ca9 | 82 | } |
sarahmarshy | 0:3bf62dd01ca9 | 83 | int main() |
sarahmarshy | 0:3bf62dd01ca9 | 84 | { |
sarahmarshy | 0:3bf62dd01ca9 | 85 | //Turn LEDs off |
sarahmarshy | 0:3bf62dd01ca9 | 86 | r = 1.0; |
sarahmarshy | 0:3bf62dd01ca9 | 87 | g = 1.0; |
sarahmarshy | 0:3bf62dd01ca9 | 88 | //clear the screen |
sarahmarshy | 0:3bf62dd01ca9 | 89 | lcd.cls(); |
sarahmarshy | 0:3bf62dd01ca9 | 90 | lcd.locate(0,3); |
sarahmarshy | 0:3bf62dd01ca9 | 91 | //Display the temp and countfown |
sarahmarshy | 0:3bf62dd01ca9 | 92 | lcd.printf("Temp = %.1f C\nPong will begin in: 3...\n",sensor.temp()); |
sarahmarshy | 0:3bf62dd01ca9 | 93 | wait(1); |
sarahmarshy | 0:3bf62dd01ca9 | 94 | lcd.cls(); |
sarahmarshy | 0:3bf62dd01ca9 | 95 | lcd.locate(0,3); |
sarahmarshy | 0:3bf62dd01ca9 | 96 | lcd.printf("Temp = %.1f C\nPong will begin in: 2...\n",sensor.temp()); |
sarahmarshy | 0:3bf62dd01ca9 | 97 | wait(1); |
sarahmarshy | 0:3bf62dd01ca9 | 98 | lcd.cls(); |
sarahmarshy | 0:3bf62dd01ca9 | 99 | lcd.locate(0,3); |
sarahmarshy | 0:3bf62dd01ca9 | 100 | lcd.printf("Temp = %.1f C\nPong will begin in: 1...\n",sensor.temp()); |
sarahmarshy | 0:3bf62dd01ca9 | 101 | wait(1); |
sarahmarshy | 0:3bf62dd01ca9 | 102 | lcd.cls(); |
sarahmarshy | 0:3bf62dd01ca9 | 103 | //start pong |
sarahmarshy | 0:3bf62dd01ca9 | 104 | pong(3,0); |
sarahmarshy | 0:3bf62dd01ca9 | 105 | |
sarahmarshy | 0:3bf62dd01ca9 | 106 | } |