Mynput: Game controller for Color Quest.
Dependencies: Adafruit_NeoPixel MMA8451Q PinDetect_KL25Z USBDevice mbed
Fork of idd_fa15_hw3_lauren_bill_tomas by
main.cpp@0:d307eb0be182, 2015-09-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |