Pong program with multiple dependencies to test pgen

Dependencies:   Beep C12832 LM75B MMA7660 mbed

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?

UserRevisionLine numberNew 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 }