Mynput: Game controller for Color Quest.

Dependencies:   Adafruit_NeoPixel MMA8451Q PinDetect_KL25Z USBDevice mbed

Fork of idd_hw3 by IDD HW3

main.cpp

Committer:
bkim54
Date:
2015-09-15
Revision:
0:d307eb0be182
Child:
1:1f45953fccf9

File content as of revision 0:d307eb0be182:

#include "mbed.h"
#include "MMA8451Q.h"
#include "Timer.h"

// define I2C Pins and address for KL25Z. Taken from default sample code.
PinName const SDA = PTE25;
PinName const SCL = PTE24;
Timer timer;
int timer_begin;
#define MMA8451_I2C_ADDRESS (0x1d<<1)

#define leanLeftThresh -0.4
#define leanRightThresh 0.4
#define jumpThresh 0.4

//serial connection to PC via USB
Serial pc(USBTX, USBRX);
bool timerStart = false;

int main(void)
{
    //configure on-board I2C accelerometer on KL25Z
    MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); 
    //map read acceleration to PWM output on red status LED
    PwmOut rled(LED_RED);
    float x,y,z, x_new, y_new, z_new;
    timer.start();
    timer_begin = timer.read_ms();
    while (true) {
        x = acc.getAccX();
        y = acc.getAccY();
        z = acc.getAccZ();
        
        wait(.2); //wait 0.2 ms
        
        x_new = acc.getAccX();
        y_new = acc.getAccY();
        z_new = acc.getAccZ();
        
        if ( (y > leanRightThresh) && (y_new > leanRightThresh)) {
            pc.printf("Lean right\n");
        } else if ((y < leanLeftThresh) && (y_new < leanLeftThresh)) {
            pc.printf("Lean left\n"); 
        }
        if( x < jumpThresh && timer.read_ms() - timer_begin > 300 ) {
            timerStart = true;
            pc.printf("Jump\n");                    
            timer_begin = timer.read_ms();
        }

        
    }
}