Glove with light ring which plays http://www.raiden-x.net/

Dependencies:   Adafruit_NeoPixel MMA8451Q USBDevice mbed

Fork of Raiden by Christian Le

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
--- /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
--- 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
--- 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
     }
 }
--- 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
--- /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