Newhaven 320x240 LCD

Dependencies:   mbed

Revision:
4:aa6dc362b462
Parent:
3:1cf3ec6c70d7
--- a/main.cpp	Sun Feb 27 23:30:14 2011 +0000
+++ b/main.cpp	Mon Feb 28 17:48:12 2011 +0000
@@ -1,3 +1,7 @@
+/* mbed Newhaven LCD simple Pong demonstration
+ * Copywrite (c) 2011, Paul Evans
+ */
+
 #include "mbed.h"
 #include "newhaven.h"
 
@@ -5,19 +9,42 @@
 NHLCD   MyLCD(p5,p6,p7,p16,p17,&MyBus);
 
 int main() {
-    int i;
+    int r1 = 100, r2 = 100, rb = 115, cb = 155;
+    int dr = 5, dc = 5;
+
     MyLCD.Init();
     MyLCD.clearScreen();
     wait(.5);
+    MyLCD.text("PONG!", 0, 15);
+        
     while(1)
     {
-        MyLCD.text("Hello World!", 10, 1);
-        wait(1);
-        for(i = 0; i < 20; i++){
-            MyLCD.setPixel(i,i);
+        MyLCD.fillRect(r1, 0, 20, 4, 1);    // draw the paddles and ball
+        MyLCD.fillRect(r2, 312, 20, 4, 1);
+        MyLCD.fillRect(rb, cb, 3, 3, 1);
+        
+        wait(.2);                           // wait between frames                            
+        
+        MyLCD.fillRect(r1, 0, 20, 4, 0);    // clear the paddles and balls
+        MyLCD.fillRect(r2, 312, 20, 4, 0);
+        MyLCD.fillRect(rb, cb, 4, 4, 0);
+        
+        rb += dr;   // move the ball
+        cb += dc;
+        if (cb > 100) { // move the right paddle if necessary
+            if (r2 > rb && r2 > 0) r2-=5;
+            else if (r2 < 214) r2+=5;
         }
-        wait(1);
-        MyLCD.clearScreen();
-        wait(1);
+        if (cb < 220) { // move the left paddle if necessary
+            if (r1 > rb && r1 > 0) r1-=5;
+            else if (r1 < 214) r1+=5;
+        }
+        if (cb > 310 || cb < 4){    // check bounds for ball column
+            dc = -dc;
+            cb += dc;
+        }if (rb < 10 || rb > 234){  // check bounds for ball row
+            dr = -dr;
+            rb += dr;
+        }
     }
 }