RaidenX Iron Man

Dependencies:   MMA8451Q USBDevice mbed Adafruit_NeoPixel

Fork of RaidenX by IDD Fall 2015

Files at this revision

API Documentation at this revision

Comitter:
phorust
Date:
Mon Sep 21 05:55:49 2015 +0000
Parent:
10:ca3a7890d146
Commit message:
finish hw3 by adding working led code, fixing axis, increasing deadzone

Changed in this revision

Adafruit_NeoPixel.lib Show annotated file Show diff for this revision Revisions of this file
USBDevice.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
raiden_const.h Show annotated file Show diff for this revision Revisions of this file
diff -r ca3a7890d146 -r 94c3adb68ec2 Adafruit_NeoPixel.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Adafruit_NeoPixel.lib	Mon Sep 21 05:55:49 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/tomasero/code/Adafruit_NeoPixel/#21d6d7016965
diff -r ca3a7890d146 -r 94c3adb68ec2 USBDevice.lib
--- a/USBDevice.lib	Mon Sep 21 03:25:34 2015 +0000
+++ b/USBDevice.lib	Mon Sep 21 05:55:49 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/USBDevice/#335f2506f422
+http://mbed.org/users/mbed_official/code/USBDevice/#2af474687369
diff -r ca3a7890d146 -r 94c3adb68ec2 main.cpp
--- a/main.cpp	Mon Sep 21 03:25:34 2015 +0000
+++ b/main.cpp	Mon Sep 21 05:55:49 2015 +0000
@@ -1,182 +1,40 @@
 #include "mbed.h"
 #include "MMA8451Q.h"
-//#include "USBKeyboard.h"
-//#include "USBHID.h"
+#include "USBKeyboard.h"
+#include "USBHID.h"
+#include "raiden_const.h"
+#include "PololuLedStrip.h"
 
+// you can't try to use USBKeyboard if it doesn't exist otherwise it will hang
+#define DEBUG 0
 
 #define MMA8451_I2C_ADDRESS (0x1d<<1)
-#define THRESHOLD 0.1
+#define THRESHOLD 0.2
 
 #define LED_COUNT 24
 #define DATA_PIN D6
-
-typedef struct {
-    unsigned char usage;
-    unsigned char modifier;
-} KEYMAP;
+PololuLedStrip LEDStrip(D8);
 
 uint8_t r = 255;
 uint8_t g = 255;
 uint8_t b = 255;
 
-//#define KEYMAP_SIZE (152)
-//const KEYMAP keymap[KEYMAP_SIZE] = {
-//    {0, 0},             /* NUL */
-//    {0, 0},             /* SOH */
-//    {0, 0},             /* STX */
-//    {0, 0},             /* ETX */
-//    {0, 0},             /* EOT */
-//    {0, 0},             /* ENQ */
-//    {0, 0},             /* ACK */
-//    {0, 0},             /* BEL */
-//    {0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */
-//    {0x2b, 0},          /* TAB */  /* Keyboard Tab */
-//    {0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
-//    {0, 0},             /* VT  */
-//    {0, 0},             /* FF  */
-//    {0, 0},             /* CR  */
-//    {0, 0},             /* SO  */
-//    {0, 0},             /* SI  */
-//    {0, 0},             /* DEL */
-//    {0, 0},             /* DC1 */
-//    {0, 0},             /* DC2 */
-//    {0, 0},             /* DC3 */
-//    {0, 0},             /* DC4 */
-//    {0, 0},             /* NAK */
-//    {0, 0},             /* SYN */
-//    {0, 0},             /* ETB */
-//    {0, 0},             /* CAN */
-//    {0, 0},             /* EM  */
-//    {0, 0},             /* SUB */
-//    {0, 0},             /* ESC */
-//    {0, 0},             /* FS  */
-//    {0, 0},             /* GS  */
-//    {0, 0},             /* RS  */
-//    {0, 0},             /* US  */
-//    {0x2c, 0},          /*   */
-//    {0x1e, KEY_SHIFT},      /* ! */
-//    {0x34, KEY_SHIFT},      /* " */
-//    {0x20, KEY_SHIFT},      /* # */
-//    {0x21, KEY_SHIFT},      /* $ */
-//    {0x22, KEY_SHIFT},      /* % */
-//    {0x24, KEY_SHIFT},      /* & */
-//    {0x34, 0},          /* ' */
-//    {0x26, KEY_SHIFT},      /* ( */
-//    {0x27, KEY_SHIFT},      /* ) */
-//    {0x25, KEY_SHIFT},      /* * */
-//    {0x2e, KEY_SHIFT},      /* + */
-//    {0x36, 0},          /* , */
-//    {0x2d, 0},          /* - */
-//    {0x37, 0},          /* . */
-//    {0x38, 0},          /* / */
-//    {0x27, 0},          /* 0 */
-//    {0x1e, 0},          /* 1 */
-//    {0x1f, 0},          /* 2 */
-//    {0x20, 0},          /* 3 */
-//    {0x21, 0},          /* 4 */
-//    {0x22, 0},          /* 5 */
-//    {0x23, 0},          /* 6 */
-//    {0x24, 0},          /* 7 */
-//    {0x25, 0},          /* 8 */
-//    {0x26, 0},          /* 9 */
-//    {0x33, KEY_SHIFT},      /* : */
-//    {0x33, 0},          /* ; */
-//    {0x36, KEY_SHIFT},      /* < */
-//    {0x2e, 0},          /* = */
-//    {0x37, KEY_SHIFT},      /* > */
-//    {0x38, KEY_SHIFT},      /* ? */
-//    {0x1f, KEY_SHIFT},      /* @ */
-//    {0x04, KEY_SHIFT},      /* A */
-//    {0x05, KEY_SHIFT},      /* B */
-//    {0x06, KEY_SHIFT},      /* C */
-//    {0x07, KEY_SHIFT},      /* D */
-//    {0x08, KEY_SHIFT},      /* E */
-//    {0x09, KEY_SHIFT},      /* F */
-//    {0x0a, KEY_SHIFT},      /* G */
-//    {0x0b, KEY_SHIFT},      /* H */
-//    {0x0c, KEY_SHIFT},      /* I */
-//    {0x0d, KEY_SHIFT},      /* J */
-//    {0x0e, KEY_SHIFT},      /* K */
-//    {0x0f, KEY_SHIFT},      /* L */
-//    {0x10, KEY_SHIFT},      /* M */
-//    {0x11, KEY_SHIFT},      /* N */
-//    {0x12, KEY_SHIFT},      /* O */
-//    {0x13, KEY_SHIFT},      /* P */
-//    {0x14, KEY_SHIFT},      /* Q */
-//    {0x15, KEY_SHIFT},      /* R */
-//    {0x16, KEY_SHIFT},      /* S */
-//    {0x17, KEY_SHIFT},      /* T */
-//    {0x18, KEY_SHIFT},      /* U */
-//    {0x19, KEY_SHIFT},      /* V */
-//    {0x1a, KEY_SHIFT},      /* W */
-//    {0x1b, KEY_SHIFT},      /* X */
-//    {0x1c, KEY_SHIFT},      /* Y */
-//    {0x1d, KEY_SHIFT},      /* Z */
-//    {0x2f, 0},          /* [ */
-//    {0x31, 0},          /* \ */
-//    {0x30, 0},          /* ] */
-//    {0x23, KEY_SHIFT},      /* ^ */
-//    {0x2d, KEY_SHIFT},      /* _ */
-//    {0x35, 0},          /* ` */
-//    {0x04, 0},          /* a */
-//    {0x05, 0},          /* b */
-//    {0x06, 0},          /* c */
-//    {0x07, 0},          /* d */
-//    {0x08, 0},          /* e */
-//    {0x09, 0},          /* f */
-//    {0x0a, 0},          /* g */
-//    {0x0b, 0},          /* h */
-//    {0x0c, 0},          /* i */
-//    {0x0d, 0},          /* j */
-//    {0x0e, 0},          /* k */
-//    {0x0f, 0},          /* l */
-//    {0x10, 0},          /* m */
-//    {0x11, 0},          /* n */
-//    {0x12, 0},          /* o */
-//    {0x13, 0},          /* p */
-//    {0x14, 0},          /* q */
-//    {0x15, 0},          /* r */
-//    {0x16, 0},          /* s */
-//    {0x17, 0},          /* t */
-//    {0x18, 0},          /* u */
-//    {0x19, 0},          /* v */
-//    {0x1a, 0},          /* w */
-//    {0x1b, 0},          /* x */
-//    {0x1c, 0},          /* y */
-//    {0x1d, 0},          /* z */
-//    {0x2f, KEY_SHIFT},      /* { */
-//    {0x31, KEY_SHIFT},      /* | */
-//    {0x30, KEY_SHIFT},      /* } */
-//    {0x35, KEY_SHIFT},      /* ~ */
-//    {0,0},              /* DEL */
-//
-//    {0x3a, 0},          /* F1 */
-//    {0x3b, 0},          /* F2 */
-//    {0x3c, 0},          /* F3 */
-//    {0x3d, 0},          /* F4 */
-//    {0x3e, 0},          /* F5 */
-//    {0x3f, 0},          /* F6 */
-//    {0x40, 0},          /* F7 */
-//    {0x41, 0},          /* F8 */
-//    {0x42, 0},          /* F9 */
-//    {0x43, 0},          /* F10 */
-//    {0x44, 0},          /* F11 */
-//    {0x45, 0},          /* F12 */
-//
-//    {0x46, 0},          /* PRINT_SCREEN */
-//    {0x47, 0},          /* SCROLL_LOCK */
-//    {0x39, 0},          /* CAPS_LOCK */
-//    {0x53, 0},          /* NUM_LOCK */
-//    {0x49, 0},          /* INSERT */
-//    {0x4a, 0},          /* HOME */
-//    {0x4b, 0},          /* PAGE_UP */
-//    {0x4e, 0},          /* PAGE_DOWN */
-//    
-//    {0x4f, 0},          /* RIGHT_ARROW */
-//    {0x50, 0},          /* LEFT_ARROW */
-//    {0x51, 0},          /* DOWN_ARROW */
-//    {0x52, 0},          /* UP_ARROW */
-//};
+void flash() {
+    rgb_color white = (rgb_color){254,254,254};
+    rgb_color all_white[LED_COUNT];
+    for (int i = 0; i < LED_COUNT; i++) {
+        all_white[i] = white;
+    }
+    LEDStrip.write(all_white, LED_COUNT);
+}
+void flashOff() {
+    rgb_color black = (rgb_color){0,0,0};
+    rgb_color all_black[LED_COUNT];
+    for (int i = 0; i < LED_COUNT; i++) {
+        all_black[i] = black;
+    }
+    LEDStrip.write(all_black, LED_COUNT);
+}
 
 int main(void) {
     Serial mac(USBTX, USBRX);
@@ -184,23 +42,29 @@
     MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
     PwmOut rled(LED_RED);
     PwmOut bled(LED_BLUE);
+
+    AnalogIn flex(A0);
     
-//    USBKeyboard keyboard;
-//    HID_REPORT report;
-    
-    AnalogIn flex(A0);
+    #if DEBUG == 0
+        USBKeyboard keyboard;
+        HID_REPORT report;
  
- //   report.data[0] = 1; // this is the USB ID
-//    report.data[1] = 0; // this is a modifier key (ie: ctrl/shift/alt)
-//    report.data[2] = 0; // i haven't figured this one out
-//    report.data[3] = 0; // UP
-//    report.data[4] = 0; // DOWN
-//    report.data[5] = 0; // LEFT
-//    report.data[6] = 0; // RIGHT
-//    report.data[7] = keymap['z'].usage; // SHOOT
-//    report.data[8] = 0; // BOMB
-//    report.length = 9;
+    report.data[0] = 1; // this is the USB ID
+    report.data[1] = 0; // this is a modifier key (ie: ctrl/shift/alt)
+    report.data[2] = 0; // i haven't figured this one out
+    report.data[3] = 0; // UP
+    report.data[4] = 0; // DOWN
+    report.data[5] = 0; // LEFT
+    report.data[6] = 0; // RIGHT
+    report.data[7] = 0; // SHOOT
+    report.data[8] = 0; // BOMB
+    report.length = 9;
+    #endif
 
+    mac.printf("R A I D E N   X", flex.read());
+    flash();
+    wait(2);
+    flashOff();
     while (true) {
         mac.printf("%f", flex.read());
 
@@ -208,40 +72,64 @@
         float y = acc.getAccY();
 
         if (x < 0 - THRESHOLD) {
-            mac.printf("Left\r\n");
-//            report.data[6] = 0;
-//            report.data[5] = keymap[LEFT_ARROW].usage;
-        }
-
-        if (x > 0 + THRESHOLD) {
-            mac.printf("Right\r\n");
-//            report.data[6] = keymap[RIGHT_ARROW].usage;
-//            report.data[5] = 0;
+            mac.printf("Down\r\n");
+            #if DEBUG == 0
+                report.data[6] = 0;
+                report.data[5] = keymap[DOWN_ARROW].usage;
+            #endif
+        } else if (x > 0 + THRESHOLD) {
+            mac.printf("Up\r\n");
+            #if DEBUG == 0
+                report.data[6] = keymap[UP_ARROW].usage;
+                report.data[5] = 0;
+            #endif
+        } else {
+            #if DEBUG == 0
+                report.data[5] = 0;
+                report.data[6] = 0;
+            #endif
         }
 
         if (y < 0 - THRESHOLD) {
-            mac.printf("Up\r\n");
-//            report.data[3] = keymap[UP_ARROW].usage;
-//            report.data[4] = 0;
-        }
-
-        if (y > 0 + THRESHOLD) {
-            mac.printf("Down\r\n");
-//            report.data[3] = 0;
-//            report.data[4] = keymap[DOWN_ARROW].usage;
+            mac.printf("Left\r\n");
+            #if DEBUG == 0
+                report.data[3] = keymap[LEFT_ARROW].usage;
+                report.data[4] = 0;
+            #endif
+        } else if (y > 0 + THRESHOLD) {
+            mac.printf("Right\r\n");
+            #if DEBUG == 0
+                report.data[3] = 0;
+                report.data[4] = keymap[RIGHT_ARROW].usage;
+            #endif
+        } else {
+            #if DEBUG == 0
+                report.data[3] = 0;
+                report.data[4] = 0;
+            #endif
         }
         
-        if (flex.read() < 0.4) {
+        if (flex.read() < 0.3) {
             mac.printf("Bomb");
-//            report.data[8] = keymap['x'].usage;
+            flash();
+            #if DEBUG == 0
+                report.data[8] = keymap['x'].usage;
+            #endif
         } else {
-//            report.data[8] = 0;
+            flashOff();
+            #if DEBUG == 0
+                report.data[8] = 0;
+            #endif
         }
 
         rled = 1.0 - abs(acc.getAccX());
         bled = 1.0 - abs(acc.getAccY());
         
-//        keyboard.send(&report);
-        wait(0.5);
+        #if DEBUG == 0
+            report.data[7] = keymap['z'].usage;
+            keyboard.send(&report);
+        #elif DEBUG == 1
+            wait(0.5);
+        #endif
     }
 }
diff -r ca3a7890d146 -r 94c3adb68ec2 mbed.bld
--- a/mbed.bld	Mon Sep 21 03:25:34 2015 +0000
+++ b/mbed.bld	Mon Sep 21 05:55:49 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/3d0ef94e36ec
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/4f6c30876dfa
\ No newline at end of file
diff -r ca3a7890d146 -r 94c3adb68ec2 raiden_const.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/raiden_const.h	Mon Sep 21 05:55:49 2015 +0000
@@ -0,0 +1,163 @@
+typedef struct {
+    unsigned char usage;
+    unsigned char modifier;
+} KEYMAP;
+
+#define KEYMAP_SIZE (152)
+const KEYMAP keymap[KEYMAP_SIZE] = {
+    {0, 0},             /* NUL */
+    {0, 0},             /* SOH */
+    {0, 0},             /* STX */
+    {0, 0},             /* ETX */
+    {0, 0},             /* EOT */
+    {0, 0},             /* ENQ */
+    {0, 0},             /* ACK */
+    {0, 0},             /* BEL */
+    {0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */
+    {0x2b, 0},          /* TAB */  /* Keyboard Tab */
+    {0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
+    {0, 0},             /* VT  */
+    {0, 0},             /* FF  */
+    {0, 0},             /* CR  */
+    {0, 0},             /* SO  */
+    {0, 0},             /* SI  */
+    {0, 0},             /* DEL */
+    {0, 0},             /* DC1 */
+    {0, 0},             /* DC2 */
+    {0, 0},             /* DC3 */
+    {0, 0},             /* DC4 */
+    {0, 0},             /* NAK */
+    {0, 0},             /* SYN */
+    {0, 0},             /* ETB */
+    {0, 0},             /* CAN */
+    {0, 0},             /* EM  */
+    {0, 0},             /* SUB */
+    {0, 0},             /* ESC */
+    {0, 0},             /* FS  */
+    {0, 0},             /* GS  */
+    {0, 0},             /* RS  */
+    {0, 0},             /* US  */
+    {0x2c, 0},          /*   */
+    {0x1e, KEY_SHIFT},      /* ! */
+    {0x34, KEY_SHIFT},      /* " */
+    {0x20, KEY_SHIFT},      /* # */
+    {0x21, KEY_SHIFT},      /* $ */
+    {0x22, KEY_SHIFT},      /* % */
+    {0x24, KEY_SHIFT},      /* & */
+    {0x34, 0},          /* ' */
+    {0x26, KEY_SHIFT},      /* ( */
+    {0x27, KEY_SHIFT},      /* ) */
+    {0x25, KEY_SHIFT},      /* * */
+    {0x2e, KEY_SHIFT},      /* + */
+    {0x36, 0},          /* , */
+    {0x2d, 0},          /* - */
+    {0x37, 0},          /* . */
+    {0x38, 0},          /* / */
+    {0x27, 0},          /* 0 */
+    {0x1e, 0},          /* 1 */
+    {0x1f, 0},          /* 2 */
+    {0x20, 0},          /* 3 */
+    {0x21, 0},          /* 4 */
+    {0x22, 0},          /* 5 */
+    {0x23, 0},          /* 6 */
+    {0x24, 0},          /* 7 */
+    {0x25, 0},          /* 8 */
+    {0x26, 0},          /* 9 */
+    {0x33, KEY_SHIFT},      /* : */
+    {0x33, 0},          /* ; */
+    {0x36, KEY_SHIFT},      /* < */
+    {0x2e, 0},          /* = */
+    {0x37, KEY_SHIFT},      /* > */
+    {0x38, KEY_SHIFT},      /* ? */
+    {0x1f, KEY_SHIFT},      /* @ */
+    {0x04, KEY_SHIFT},      /* A */
+    {0x05, KEY_SHIFT},      /* B */
+    {0x06, KEY_SHIFT},      /* C */
+    {0x07, KEY_SHIFT},      /* D */
+    {0x08, KEY_SHIFT},      /* E */
+    {0x09, KEY_SHIFT},      /* F */
+    {0x0a, KEY_SHIFT},      /* G */
+    {0x0b, KEY_SHIFT},      /* H */
+    {0x0c, KEY_SHIFT},      /* I */
+    {0x0d, KEY_SHIFT},      /* J */
+    {0x0e, KEY_SHIFT},      /* K */
+    {0x0f, KEY_SHIFT},      /* L */
+    {0x10, KEY_SHIFT},      /* M */
+    {0x11, KEY_SHIFT},      /* N */
+    {0x12, KEY_SHIFT},      /* O */
+    {0x13, KEY_SHIFT},      /* P */
+    {0x14, KEY_SHIFT},      /* Q */
+    {0x15, KEY_SHIFT},      /* R */
+    {0x16, KEY_SHIFT},      /* S */
+    {0x17, KEY_SHIFT},      /* T */
+    {0x18, KEY_SHIFT},      /* U */
+    {0x19, KEY_SHIFT},      /* V */
+    {0x1a, KEY_SHIFT},      /* W */
+    {0x1b, KEY_SHIFT},      /* X */
+    {0x1c, KEY_SHIFT},      /* Y */
+    {0x1d, KEY_SHIFT},      /* Z */
+    {0x2f, 0},          /* [ */
+    {0x31, 0},          /* \ */
+    {0x30, 0},          /* ] */
+    {0x23, KEY_SHIFT},      /* ^ */
+    {0x2d, KEY_SHIFT},      /* _ */
+    {0x35, 0},          /* ` */
+    {0x04, 0},          /* a */
+    {0x05, 0},          /* b */
+    {0x06, 0},          /* c */
+    {0x07, 0},          /* d */
+    {0x08, 0},          /* e */
+    {0x09, 0},          /* f */
+    {0x0a, 0},          /* g */
+    {0x0b, 0},          /* h */
+    {0x0c, 0},          /* i */
+    {0x0d, 0},          /* j */
+    {0x0e, 0},          /* k */
+    {0x0f, 0},          /* l */
+    {0x10, 0},          /* m */
+    {0x11, 0},          /* n */
+    {0x12, 0},          /* o */
+    {0x13, 0},          /* p */
+    {0x14, 0},          /* q */
+    {0x15, 0},          /* r */
+    {0x16, 0},          /* s */
+    {0x17, 0},          /* t */
+    {0x18, 0},          /* u */
+    {0x19, 0},          /* v */
+    {0x1a, 0},          /* w */
+    {0x1b, 0},          /* x */
+    {0x1c, 0},          /* y */
+    {0x1d, 0},          /* z */
+    {0x2f, KEY_SHIFT},      /* { */
+    {0x31, KEY_SHIFT},      /* | */
+    {0x30, KEY_SHIFT},      /* } */
+    {0x35, KEY_SHIFT},      /* ~ */
+    {0,0},              /* DEL */
+
+    {0x3a, 0},          /* F1 */
+    {0x3b, 0},          /* F2 */
+    {0x3c, 0},          /* F3 */
+    {0x3d, 0},          /* F4 */
+    {0x3e, 0},          /* F5 */
+    {0x3f, 0},          /* F6 */
+    {0x40, 0},          /* F7 */
+    {0x41, 0},          /* F8 */
+    {0x42, 0},          /* F9 */
+    {0x43, 0},          /* F10 */
+    {0x44, 0},          /* F11 */
+    {0x45, 0},          /* F12 */
+
+    {0x46, 0},          /* PRINT_SCREEN */
+    {0x47, 0},          /* SCROLL_LOCK */
+    {0x39, 0},          /* CAPS_LOCK */
+    {0x53, 0},          /* NUM_LOCK */
+    {0x49, 0},          /* INSERT */
+    {0x4a, 0},          /* HOME */
+    {0x4b, 0},          /* PAGE_UP */
+    {0x4e, 0},          /* PAGE_DOWN */
+    
+    {0x4f, 0},          /* RIGHT_ARROW */
+    {0x50, 0},          /* LEFT_ARROW */
+    {0x51, 0},          /* DOWN_ARROW */
+    {0x52, 0},          /* UP_ARROW */
+};
\ No newline at end of file