Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MMA8451Q USBDevice mbed
Fork of FRDM_MMA8451Q by
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 }
Generated on Wed Jul 13 2022 23:07:47 by
1.7.2
