IDD Fall 2015 / Mbed 2 deprecated RaidenX

Dependencies:   MMA8451Q USBDevice mbed

Fork of FRDM_MMA8451Q by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "MMA8451Q.h"
00003 //#include "USBKeyboard.h"
00004 //#include "USBHID.h"
00005 
00006 
00007 #define MMA8451_I2C_ADDRESS (0x1d<<1)
00008 #define THRESHOLD 0.1
00009 
00010 #define LED_COUNT 24
00011 #define DATA_PIN D6
00012 
00013 typedef struct {
00014     unsigned char usage;
00015     unsigned char modifier;
00016 } KEYMAP;
00017 
00018 uint8_t r = 255;
00019 uint8_t g = 255;
00020 uint8_t b = 255;
00021 
00022 //#define KEYMAP_SIZE (152)
00023 //const KEYMAP keymap[KEYMAP_SIZE] = {
00024 //    {0, 0},             /* NUL */
00025 //    {0, 0},             /* SOH */
00026 //    {0, 0},             /* STX */
00027 //    {0, 0},             /* ETX */
00028 //    {0, 0},             /* EOT */
00029 //    {0, 0},             /* ENQ */
00030 //    {0, 0},             /* ACK */
00031 //    {0, 0},             /* BEL */
00032 //    {0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */
00033 //    {0x2b, 0},          /* TAB */  /* Keyboard Tab */
00034 //    {0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
00035 //    {0, 0},             /* VT  */
00036 //    {0, 0},             /* FF  */
00037 //    {0, 0},             /* CR  */
00038 //    {0, 0},             /* SO  */
00039 //    {0, 0},             /* SI  */
00040 //    {0, 0},             /* DEL */
00041 //    {0, 0},             /* DC1 */
00042 //    {0, 0},             /* DC2 */
00043 //    {0, 0},             /* DC3 */
00044 //    {0, 0},             /* DC4 */
00045 //    {0, 0},             /* NAK */
00046 //    {0, 0},             /* SYN */
00047 //    {0, 0},             /* ETB */
00048 //    {0, 0},             /* CAN */
00049 //    {0, 0},             /* EM  */
00050 //    {0, 0},             /* SUB */
00051 //    {0, 0},             /* ESC */
00052 //    {0, 0},             /* FS  */
00053 //    {0, 0},             /* GS  */
00054 //    {0, 0},             /* RS  */
00055 //    {0, 0},             /* US  */
00056 //    {0x2c, 0},          /*   */
00057 //    {0x1e, KEY_SHIFT},      /* ! */
00058 //    {0x34, KEY_SHIFT},      /* " */
00059 //    {0x20, KEY_SHIFT},      /* # */
00060 //    {0x21, KEY_SHIFT},      /* $ */
00061 //    {0x22, KEY_SHIFT},      /* % */
00062 //    {0x24, KEY_SHIFT},      /* & */
00063 //    {0x34, 0},          /* ' */
00064 //    {0x26, KEY_SHIFT},      /* ( */
00065 //    {0x27, KEY_SHIFT},      /* ) */
00066 //    {0x25, KEY_SHIFT},      /* * */
00067 //    {0x2e, KEY_SHIFT},      /* + */
00068 //    {0x36, 0},          /* , */
00069 //    {0x2d, 0},          /* - */
00070 //    {0x37, 0},          /* . */
00071 //    {0x38, 0},          /* / */
00072 //    {0x27, 0},          /* 0 */
00073 //    {0x1e, 0},          /* 1 */
00074 //    {0x1f, 0},          /* 2 */
00075 //    {0x20, 0},          /* 3 */
00076 //    {0x21, 0},          /* 4 */
00077 //    {0x22, 0},          /* 5 */
00078 //    {0x23, 0},          /* 6 */
00079 //    {0x24, 0},          /* 7 */
00080 //    {0x25, 0},          /* 8 */
00081 //    {0x26, 0},          /* 9 */
00082 //    {0x33, KEY_SHIFT},      /* : */
00083 //    {0x33, 0},          /* ; */
00084 //    {0x36, KEY_SHIFT},      /* < */
00085 //    {0x2e, 0},          /* = */
00086 //    {0x37, KEY_SHIFT},      /* > */
00087 //    {0x38, KEY_SHIFT},      /* ? */
00088 //    {0x1f, KEY_SHIFT},      /* @ */
00089 //    {0x04, KEY_SHIFT},      /* A */
00090 //    {0x05, KEY_SHIFT},      /* B */
00091 //    {0x06, KEY_SHIFT},      /* C */
00092 //    {0x07, KEY_SHIFT},      /* D */
00093 //    {0x08, KEY_SHIFT},      /* E */
00094 //    {0x09, KEY_SHIFT},      /* F */
00095 //    {0x0a, KEY_SHIFT},      /* G */
00096 //    {0x0b, KEY_SHIFT},      /* H */
00097 //    {0x0c, KEY_SHIFT},      /* I */
00098 //    {0x0d, KEY_SHIFT},      /* J */
00099 //    {0x0e, KEY_SHIFT},      /* K */
00100 //    {0x0f, KEY_SHIFT},      /* L */
00101 //    {0x10, KEY_SHIFT},      /* M */
00102 //    {0x11, KEY_SHIFT},      /* N */
00103 //    {0x12, KEY_SHIFT},      /* O */
00104 //    {0x13, KEY_SHIFT},      /* P */
00105 //    {0x14, KEY_SHIFT},      /* Q */
00106 //    {0x15, KEY_SHIFT},      /* R */
00107 //    {0x16, KEY_SHIFT},      /* S */
00108 //    {0x17, KEY_SHIFT},      /* T */
00109 //    {0x18, KEY_SHIFT},      /* U */
00110 //    {0x19, KEY_SHIFT},      /* V */
00111 //    {0x1a, KEY_SHIFT},      /* W */
00112 //    {0x1b, KEY_SHIFT},      /* X */
00113 //    {0x1c, KEY_SHIFT},      /* Y */
00114 //    {0x1d, KEY_SHIFT},      /* Z */
00115 //    {0x2f, 0},          /* [ */
00116 //    {0x31, 0},          /* \ */
00117 //    {0x30, 0},          /* ] */
00118 //    {0x23, KEY_SHIFT},      /* ^ */
00119 //    {0x2d, KEY_SHIFT},      /* _ */
00120 //    {0x35, 0},          /* ` */
00121 //    {0x04, 0},          /* a */
00122 //    {0x05, 0},          /* b */
00123 //    {0x06, 0},          /* c */
00124 //    {0x07, 0},          /* d */
00125 //    {0x08, 0},          /* e */
00126 //    {0x09, 0},          /* f */
00127 //    {0x0a, 0},          /* g */
00128 //    {0x0b, 0},          /* h */
00129 //    {0x0c, 0},          /* i */
00130 //    {0x0d, 0},          /* j */
00131 //    {0x0e, 0},          /* k */
00132 //    {0x0f, 0},          /* l */
00133 //    {0x10, 0},          /* m */
00134 //    {0x11, 0},          /* n */
00135 //    {0x12, 0},          /* o */
00136 //    {0x13, 0},          /* p */
00137 //    {0x14, 0},          /* q */
00138 //    {0x15, 0},          /* r */
00139 //    {0x16, 0},          /* s */
00140 //    {0x17, 0},          /* t */
00141 //    {0x18, 0},          /* u */
00142 //    {0x19, 0},          /* v */
00143 //    {0x1a, 0},          /* w */
00144 //    {0x1b, 0},          /* x */
00145 //    {0x1c, 0},          /* y */
00146 //    {0x1d, 0},          /* z */
00147 //    {0x2f, KEY_SHIFT},      /* { */
00148 //    {0x31, KEY_SHIFT},      /* | */
00149 //    {0x30, KEY_SHIFT},      /* } */
00150 //    {0x35, KEY_SHIFT},      /* ~ */
00151 //    {0,0},              /* DEL */
00152 //
00153 //    {0x3a, 0},          /* F1 */
00154 //    {0x3b, 0},          /* F2 */
00155 //    {0x3c, 0},          /* F3 */
00156 //    {0x3d, 0},          /* F4 */
00157 //    {0x3e, 0},          /* F5 */
00158 //    {0x3f, 0},          /* F6 */
00159 //    {0x40, 0},          /* F7 */
00160 //    {0x41, 0},          /* F8 */
00161 //    {0x42, 0},          /* F9 */
00162 //    {0x43, 0},          /* F10 */
00163 //    {0x44, 0},          /* F11 */
00164 //    {0x45, 0},          /* F12 */
00165 //
00166 //    {0x46, 0},          /* PRINT_SCREEN */
00167 //    {0x47, 0},          /* SCROLL_LOCK */
00168 //    {0x39, 0},          /* CAPS_LOCK */
00169 //    {0x53, 0},          /* NUM_LOCK */
00170 //    {0x49, 0},          /* INSERT */
00171 //    {0x4a, 0},          /* HOME */
00172 //    {0x4b, 0},          /* PAGE_UP */
00173 //    {0x4e, 0},          /* PAGE_DOWN */
00174 //    
00175 //    {0x4f, 0},          /* RIGHT_ARROW */
00176 //    {0x50, 0},          /* LEFT_ARROW */
00177 //    {0x51, 0},          /* DOWN_ARROW */
00178 //    {0x52, 0},          /* UP_ARROW */
00179 //};
00180 
00181 int main(void) {
00182     Serial mac(USBTX, USBRX);
00183     
00184     MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
00185     PwmOut rled(LED_RED);
00186     PwmOut bled(LED_BLUE);
00187     
00188 //    USBKeyboard keyboard;
00189 //    HID_REPORT report;
00190     
00191     AnalogIn flex(A0);
00192  
00193  //   report.data[0] = 1; // this is the USB ID
00194 //    report.data[1] = 0; // this is a modifier key (ie: ctrl/shift/alt)
00195 //    report.data[2] = 0; // i haven't figured this one out
00196 //    report.data[3] = 0; // UP
00197 //    report.data[4] = 0; // DOWN
00198 //    report.data[5] = 0; // LEFT
00199 //    report.data[6] = 0; // RIGHT
00200 //    report.data[7] = keymap['z'].usage; // SHOOT
00201 //    report.data[8] = 0; // BOMB
00202 //    report.length = 9;
00203 
00204     while (true) {
00205         mac.printf("%f", flex.read());
00206 
00207         float x = acc.getAccX();
00208         float y = acc.getAccY();
00209 
00210         if (x < 0 - THRESHOLD) {
00211             mac.printf("Left\r\n");
00212 //            report.data[6] = 0;
00213 //            report.data[5] = keymap[LEFT_ARROW].usage;
00214         }
00215 
00216         if (x > 0 + THRESHOLD) {
00217             mac.printf("Right\r\n");
00218 //            report.data[6] = keymap[RIGHT_ARROW].usage;
00219 //            report.data[5] = 0;
00220         }
00221 
00222         if (y < 0 - THRESHOLD) {
00223             mac.printf("Up\r\n");
00224 //            report.data[3] = keymap[UP_ARROW].usage;
00225 //            report.data[4] = 0;
00226         }
00227 
00228         if (y > 0 + THRESHOLD) {
00229             mac.printf("Down\r\n");
00230 //            report.data[3] = 0;
00231 //            report.data[4] = keymap[DOWN_ARROW].usage;
00232         }
00233 
00234         rled = 1.0 - abs(acc.getAccX());
00235         bled = 1.0 - abs(acc.getAccY());
00236         
00237 //        keyboard.send(&report);
00238         wait(0.5);
00239     }
00240 }