Filip Maksimovic HW2 repository
Dependencies: MMA8451Q TSI TextLCD USBDevice mbed tsi_sensor
Diff: main.cpp
- 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