Filip Maksimovic HW2 repository

Dependencies:   MMA8451Q TSI TextLCD USBDevice mbed tsi_sensor

Revision:
1:e6873017e1d2
Parent:
0:6ee2b447a1c5
--- a/main.cpp	Fri Sep 12 22:53:06 2014 +0000
+++ b/main.cpp	Sun Sep 21 19:40:46 2014 +0000
@@ -2,6 +2,7 @@
 #include "MMA8451Q.h"
 #include "TSISensor.h"
 #include "USBKeyboard.h"
+#include "TextLCD.h"
 #define MMA8451_I2C_ADDRESS (0x1d<<1)
  
 int main(void) {
@@ -12,44 +13,210 @@
     PwmOut bled(LED_BLUE);
     Serial pc(USBTX, USBRX);
     USBKeyboard keyboard;
+    TextLCD lcd(PTD0,PTD5,PTA12,PTD4,PTA2,PTA1,TextLCD::LCD20x4);
+    
+    //lcd.printf("Hello World!\n");
     
     rled = 1.0; bled = 0.0; gled = 1.0;
      
     // Begin the big fat fatty loop
     while (1) {
+        
         gled = 1.0; bled = 0.0; rled = 1.0;
             
         // Instantiate the touch 'buffer'
         int x[2] = {0,0};
+        int thenum = 0;
     
         // Get touch pad sensor reading
         int t = tsi.readDistance();
         
         // Test if the touch pad is being groped
         x[0] = tsi.readDistance();
+        int activated = 0;
         
-        while(t != 0) {
+        while(t != 0 && activated <= 1) {
             gled = 0.0;
             x[1] = x[0];
             x[0] = tsi.readDistance();
+            thenum = x[0];
+            
+            
+            // display crap on the display thingie! same fat if statement from before :)
+            if (acc.getAccZ() > 0.8){
+                if (thenum <= 8)
+                    lcd.printf("s\n\n");
+                else if ((thenum>9) && (thenum<=20))
+                    lcd.printf("i\n\n");
+                else if ((thenum>20) && (thenum<31))
+                    lcd.printf("h\n\n");
+                else
+                    lcd.printf("d\n\n");
+            }
+            // half z half y
+            else if ((acc.getAccZ() > 0.3 && acc.getAccZ() < 0.8) && (acc.getAccX() < 0.3) && (acc.getAccY() < -0.3 && acc.getAccY() > -0.8)) {
+                if (thenum <= 10)
+                    lcd.printf("e\n\n");
+                else if ((thenum>11) && (thenum<=29))
+                    lcd.printf("r\n\n");
+                else
+                    lcd.printf("a\n\n");
+            }
+            // half z half +x
+            else if ((acc.getAccZ() > 0.3 && acc.getAccZ() < 0.8) && (acc.getAccX() > 0.3 && acc.getAccX() < 0.8) && (acc.getAccY() < 0.3)) {
+                if (thenum <= 8)
+                    lcd.printf("w\n\n");
+                else if ((thenum>9) && (thenum<=20))
+                    lcd.printf("f\n\n");
+                else if ((thenum>20) && (thenum<31))
+                    lcd.printf("g\n\n");
+                else
+                    lcd.printf("y\n\n");
+            }
+            // half z half -x
+            else if ((acc.getAccZ() > 0.3 && acc.getAccZ() < 0.8) && (acc.getAccY() < 0.3) && (acc.getAccX() < -0.3 && acc.getAccX() > -0.8)) {
+                if (thenum <= 8)
+                    lcd.printf("l\n\n");
+                else if ((thenum>9) && (thenum<=20))
+                    lcd.printf("u\n\n");
+                else if ((thenum>20) && (thenum<31))
+                    lcd.printf("c\n\n");
+                else
+                    lcd.printf("m\n\n");
+            }
+            // negative y direction
+            else if (acc.getAccY() < -0.8){              
+                if (thenum <= 10)
+                    lcd.printf("t\n\n");
+                else if ((thenum>11) && (thenum<=29))
+                    lcd.printf("o\n\n");
+                else
+                    lcd.printf("n\n\n");
+            }
+            //positive x direction
+            else if (acc.getAccX() > 0.8){
+                if (thenum <= 8)
+                    lcd.printf("j\n\n");
+                else if ((thenum>9) && (thenum<=20))
+                    lcd.printf("x\n\n");
+                else if ((thenum>20) && (thenum<=31))
+                    lcd.printf("q\n\n");
+                else
+                    lcd.printf("z\n\n");
+            }
+            //negative x direction
+            else if (acc.getAccX() < -0.8){
+                if (thenum <= 8)
+                    lcd.printf("p\n\n");
+                else if ((thenum>9) && (thenum<=20))
+                    lcd.printf("b\n\n");
+                else if ((thenum>21) && (thenum<=31))
+                    lcd.printf("v\n\n");
+                else
+                    lcd.printf("k\n\n");
+            }
+            
             // test for a left swipe
             if (x[0] > x[1] + 20) {
                 // i swiped right
                 // key = spacebar
                 bled = 0.0; rled = 1.0; gled = 1.0;
                 keyboard.keyCode(' ',0);
+                activated = 5;
+                lcd.printf(" \n\n");
+                break;
             }
+            
             // from experience, x[1] is the actual output 'value' booya :)
-            x[1] = x[0]; x[0] = tsi.readDistance();
+            thenum = x[1]; x[1] = x[0]; x[0] = tsi.readDistance();
             
-            if (tsi.readDistance() == 0)
+            if (tsi.readDistance() == 0){
+                activated = 1;
+                lcd.printf(" \n\n");
                 break; // get out of the fucking loop you piece of shit
+            }
             
             // built-in loop delay    
             wait(0.1);
         }
         
         // now i get into the nitty gritty - how do i extract the keys themselves
+        if (activated == 1){
+            // positive z direction
+            if (acc.getAccZ() > 0.8){
+                if (thenum <= 8)
+                    keyboard.printf("s");
+                else if ((thenum>9) && (thenum<=20))
+                    keyboard.printf("i");
+                else if ((thenum>20) && (thenum<31))
+                    keyboard.printf("h");
+                else
+                    keyboard.printf("d");
+            }
+            // half z half y
+            else if ((acc.getAccZ() > 0.3 && acc.getAccZ() < 0.8) && (acc.getAccX() < 0.3) && (acc.getAccY() < -0.3 && acc.getAccY() > -0.8)) {
+                if (thenum <= 10)
+                    keyboard.printf("e");
+                else if ((thenum>11) && (thenum<=29))
+                    keyboard.printf("r");
+                else
+                    keyboard.printf("a");
+            }
+            // half z half +x
+            else if ((acc.getAccZ() > 0.3 && acc.getAccZ() < 0.8) && (acc.getAccX() > 0.3 && acc.getAccX() < 0.8) && (acc.getAccY() < 0.3)) {
+                if (thenum <= 8)
+                    keyboard.printf("w");
+                else if ((thenum>9) && (thenum<=20))
+                    keyboard.printf("f");
+                else if ((thenum>20) && (thenum<31))
+                    keyboard.printf("g");
+                else
+                    keyboard.printf("y");
+            }
+            // half z half -x
+            else if ((acc.getAccZ() > 0.3 && acc.getAccZ() < 0.8) && (acc.getAccY() < 0.3) && (acc.getAccX() < -0.3 && acc.getAccX() > -0.8)) {
+                if (thenum <= 8)
+                    keyboard.printf("l");
+                else if ((thenum>9) && (thenum<=20))
+                    keyboard.printf("u");
+                else if ((thenum>20) && (thenum<31))
+                    keyboard.printf("c");
+                else
+                    keyboard.printf("m");
+            }
+            // negative y direction
+            else if (acc.getAccY() < -0.8){              
+                if (thenum <= 10)
+                    keyboard.printf("t");
+                else if ((thenum>11) && (thenum<=29))
+                    keyboard.printf("o");
+                else
+                    keyboard.printf("n");
+            }
+            //positive x direction
+            else if (acc.getAccX() > 0.8){
+                if (thenum <= 8)
+                    keyboard.printf("j");
+                else if ((thenum>9) && (thenum<=20))
+                    keyboard.printf("x");
+                else if ((thenum>20) && (thenum<=31))
+                    keyboard.printf("q");
+                else
+                    keyboard.printf("z");
+            }
+            //negative x direction
+            else if (acc.getAccX() < -0.8){
+                if (thenum <= 8)
+                    keyboard.printf("p");
+                else if ((thenum>9) && (thenum<=20))
+                    keyboard.printf("b");
+                else if ((thenum>21) && (thenum<=31))
+                    keyboard.printf("v");
+                else
+                    keyboard.printf("k");
+            }        
+        }
+        activated = activated - 1;
         wait(0.1);
     }
 }
\ No newline at end of file