Mynput: Game controller for Color Quest.

Dependencies:   Adafruit_NeoPixel MMA8451Q PinDetect_KL25Z USBDevice mbed

Fork of idd_hw3 by IDD HW3

Committer:
bkim54
Date:
Tue Sep 15 01:15:13 2015 +0000
Revision:
0:d307eb0be182
Child:
1:1f45953fccf9
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bkim54 0:d307eb0be182 1 #include "mbed.h"
bkim54 0:d307eb0be182 2 #include "MMA8451Q.h"
bkim54 0:d307eb0be182 3 #include "Timer.h"
bkim54 0:d307eb0be182 4
bkim54 0:d307eb0be182 5 // define I2C Pins and address for KL25Z. Taken from default sample code.
bkim54 0:d307eb0be182 6 PinName const SDA = PTE25;
bkim54 0:d307eb0be182 7 PinName const SCL = PTE24;
bkim54 0:d307eb0be182 8 Timer timer;
bkim54 0:d307eb0be182 9 int timer_begin;
bkim54 0:d307eb0be182 10 #define MMA8451_I2C_ADDRESS (0x1d<<1)
bkim54 0:d307eb0be182 11
bkim54 0:d307eb0be182 12 #define leanLeftThresh -0.4
bkim54 0:d307eb0be182 13 #define leanRightThresh 0.4
bkim54 0:d307eb0be182 14 #define jumpThresh 0.4
bkim54 0:d307eb0be182 15
bkim54 0:d307eb0be182 16 //serial connection to PC via USB
bkim54 0:d307eb0be182 17 Serial pc(USBTX, USBRX);
bkim54 0:d307eb0be182 18 bool timerStart = false;
bkim54 0:d307eb0be182 19
bkim54 0:d307eb0be182 20 int main(void)
bkim54 0:d307eb0be182 21 {
bkim54 0:d307eb0be182 22 //configure on-board I2C accelerometer on KL25Z
bkim54 0:d307eb0be182 23 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
bkim54 0:d307eb0be182 24 //map read acceleration to PWM output on red status LED
bkim54 0:d307eb0be182 25 PwmOut rled(LED_RED);
bkim54 0:d307eb0be182 26 float x,y,z, x_new, y_new, z_new;
bkim54 0:d307eb0be182 27 timer.start();
bkim54 0:d307eb0be182 28 timer_begin = timer.read_ms();
bkim54 0:d307eb0be182 29 while (true) {
bkim54 0:d307eb0be182 30 x = acc.getAccX();
bkim54 0:d307eb0be182 31 y = acc.getAccY();
bkim54 0:d307eb0be182 32 z = acc.getAccZ();
bkim54 0:d307eb0be182 33
bkim54 0:d307eb0be182 34 wait(.2); //wait 0.2 ms
bkim54 0:d307eb0be182 35
bkim54 0:d307eb0be182 36 x_new = acc.getAccX();
bkim54 0:d307eb0be182 37 y_new = acc.getAccY();
bkim54 0:d307eb0be182 38 z_new = acc.getAccZ();
bkim54 0:d307eb0be182 39
bkim54 0:d307eb0be182 40 if ( (y > leanRightThresh) && (y_new > leanRightThresh)) {
bkim54 0:d307eb0be182 41 pc.printf("Lean right\n");
bkim54 0:d307eb0be182 42 } else if ((y < leanLeftThresh) && (y_new < leanLeftThresh)) {
bkim54 0:d307eb0be182 43 pc.printf("Lean left\n");
bkim54 0:d307eb0be182 44 }
bkim54 0:d307eb0be182 45 if( x < jumpThresh && timer.read_ms() - timer_begin > 300 ) {
bkim54 0:d307eb0be182 46 timerStart = true;
bkim54 0:d307eb0be182 47 pc.printf("Jump\n");
bkim54 0:d307eb0be182 48 timer_begin = timer.read_ms();
bkim54 0:d307eb0be182 49 }
bkim54 0:d307eb0be182 50
bkim54 0:d307eb0be182 51
bkim54 0:d307eb0be182 52 }
bkim54 0:d307eb0be182 53 }