| ... | ... |
@@ -1,137 +1,137 @@ |
| 1 |
- |
|
| 2 |
-#undef DEBUG |
|
| 3 |
- |
|
| 4 |
-#define NUM_BUTTONS 40 // you don't need to change this value |
|
| 5 |
-#define NUM_AXES 8 // 6 axes to UNO, and 8 to MEGA. If you are using UNO, don't need to change this value. |
|
| 6 |
- |
|
| 7 |
-typedef struct joyReport_t {
|
|
| 8 |
- int16_t axis[NUM_AXES]; |
|
| 9 |
- uint8_t button[(NUM_BUTTONS + 7) / 8]; // 8 buttons per byte |
|
| 10 |
-} joyReport_t; |
|
| 11 |
- |
|
| 12 |
-joyReport_t joyReport; |
|
| 13 |
- |
|
| 14 |
-uint8_t btn[12]; |
|
| 15 |
-int fulloff = 0; |
|
| 16 |
-void setup(void); |
|
| 17 |
-void loop(void); |
|
| 18 |
-void setButton(joyReport_t *joy, uint8_t button); |
|
| 19 |
-void clearButton(joyReport_t *joy, uint8_t button); |
|
| 20 |
-void sendJoyReport(joyReport_t *report); |
|
| 21 |
- |
|
| 22 |
- |
|
| 23 |
-void setup() |
|
| 24 |
-{
|
|
| 25 |
- //set pin to input Button |
|
| 26 |
- for ( int portId = 02; portId < 13; portId ++ ) |
|
| 27 |
- {
|
|
| 28 |
- pinMode( portId, INPUT_PULLUP); |
|
| 29 |
- } |
|
| 30 |
- Serial.begin(115200); |
|
| 31 |
- delay(200); |
|
| 32 |
- |
|
| 33 |
- |
|
| 34 |
- for (uint8_t ind = 0; ind < 8; ind++) {
|
|
| 35 |
- joyReport.axis[ind] = ind * 1000; |
|
| 36 |
- } |
|
| 37 |
- for (uint8_t ind = 0; ind < sizeof(joyReport.button); ind++) {
|
|
| 38 |
- joyReport.button[ind] = 0; |
|
| 39 |
- } |
|
| 40 |
-} |
|
| 41 |
- |
|
| 42 |
-// Send an HID report to the USB interface |
|
| 43 |
-void sendJoyReport(struct joyReport_t *report) |
|
| 44 |
-{
|
|
| 45 |
-#ifndef DEBUG |
|
| 46 |
- Serial.write((uint8_t *)report, sizeof(joyReport_t)); |
|
| 47 |
-#else |
|
| 48 |
- // dump human readable output for debugging |
|
| 49 |
- for (uint8_t ind = 0; ind < NUM_AXES; ind++) {
|
|
| 50 |
- Serial.print("axis[");
|
|
| 51 |
- Serial.print(ind); |
|
| 52 |
- Serial.print("]= ");
|
|
| 53 |
- Serial.print(report->axis[ind]); |
|
| 54 |
- Serial.print(" ");
|
|
| 55 |
- } |
|
| 56 |
- Serial.println(); |
|
| 57 |
- for (uint8_t ind = 0; ind < NUM_BUTTONS / 8; ind++) {
|
|
| 58 |
- Serial.print("button[");
|
|
| 59 |
- Serial.print(ind); |
|
| 60 |
- Serial.print("]= ");
|
|
| 61 |
- Serial.print(report->button[ind], HEX); |
|
| 62 |
- Serial.print(" ");
|
|
| 63 |
- } |
|
| 64 |
- Serial.println(); |
|
| 65 |
-#endif |
|
| 66 |
-} |
|
| 67 |
- |
|
| 68 |
-// turn a button on |
|
| 69 |
-void setButton(joyReport_t *joy, uint8_t button) |
|
| 70 |
-{
|
|
| 71 |
- uint8_t index = button / 8; |
|
| 72 |
- uint8_t bit = button - 8 * index; |
|
| 73 |
- |
|
| 74 |
- joy->button[index] |= 1 << bit; |
|
| 75 |
-} |
|
| 76 |
- |
|
| 77 |
-// turn a button off |
|
| 78 |
-void clearButton(joyReport_t *joy, uint8_t button) |
|
| 79 |
-{
|
|
| 80 |
- uint8_t index = button / 8; |
|
| 81 |
- uint8_t bit = button - 8 * index; |
|
| 82 |
- |
|
| 83 |
- joy->button[index] &= ~(1 << bit); |
|
| 84 |
-} |
|
| 85 |
- |
|
| 86 |
-/* |
|
| 87 |
- Read Digital port for Button |
|
| 88 |
- Read Analog port for axis |
|
| 89 |
-*/ |
|
| 90 |
-void loop() |
|
| 91 |
-{
|
|
| 92 |
- |
|
| 93 |
- for (int bt = 1; bt < 13; bt ++) |
|
| 94 |
- {
|
|
| 95 |
- // btn[bt] = digitalRead(bt + 1); |
|
| 96 |
- btn[bt] = LOW; |
|
| 97 |
- } |
|
| 98 |
- |
|
| 99 |
- for (int on = 01; on < 13; on++) |
|
| 100 |
- {
|
|
| 101 |
- if (btn[on] == LOW) |
|
| 102 |
- {
|
|
| 103 |
- setButton(&joyReport, on + 16); |
|
| 104 |
- |
|
| 105 |
- delay(1); |
|
| 106 |
- } |
|
| 107 |
- for (int on = 01; on < 13; on++) |
|
| 108 |
- {
|
|
| 109 |
- if (btn[on] == HIGH) |
|
| 110 |
- {
|
|
| 111 |
- clearButton(&joyReport, on + 16); |
|
| 112 |
- } |
|
| 113 |
- |
|
| 114 |
- } |
|
| 115 |
- } |
|
| 116 |
- |
|
| 117 |
- |
|
| 118 |
-//for (uint8_t axis = 0; axis < 1; axis++) {
|
|
| 119 |
-// joyReport.axis[axis] = map(analogRead(axis), 0, 1023, -32768, 32767 ); |
|
| 120 |
-//} |
|
| 121 |
- |
|
| 122 |
- joyReport.axis[0] = 0; |
|
| 123 |
- joyReport.axis[1] = 0; |
|
| 124 |
- joyReport.axis[2] = map(analogRead(2), 0, 1023, -32768, 32767 ); |
|
| 125 |
- joyReport.axis[3] = map(analogRead(3), 0, 1023, -32768, 32767 ); |
|
| 126 |
- joyReport.axis[4] = map(analogRead(4), 0, 1023, -32768, 32767 ); |
|
| 127 |
- joyReport.axis[5] = 0; |
|
| 128 |
- joyReport.axis[6] = 0; |
|
| 129 |
- joyReport.axis[7] = 0; |
|
| 130 |
- joyReport.axis[8] = 0; |
|
| 131 |
- |
|
| 132 |
- //Send Data to HID |
|
| 133 |
- sendJoyReport(&joyReport); |
|
| 134 |
- |
|
| 135 |
- delay(35); |
|
| 136 |
- fulloff = 0; |
|
| 137 |
-} |
|
| 1 |
+ |
|
| 2 |
+#undef DEBUG |
|
| 3 |
+ |
|
| 4 |
+#define NUM_BUTTONS 40 // you don't need to change this value |
|
| 5 |
+#define NUM_AXES 8 // 6 axes to UNO, and 8 to MEGA. If you are using UNO, don't need to change this value. |
|
| 6 |
+ |
|
| 7 |
+typedef struct joyReport_t {
|
|
| 8 |
+ int16_t axis[NUM_AXES]; |
|
| 9 |
+ uint8_t button[(NUM_BUTTONS + 7) / 8]; // 8 buttons per byte |
|
| 10 |
+} joyReport_t; |
|
| 11 |
+ |
|
| 12 |
+joyReport_t joyReport; |
|
| 13 |
+ |
|
| 14 |
+uint8_t btn[12]; |
|
| 15 |
+int fulloff = 0; |
|
| 16 |
+void setup(void); |
|
| 17 |
+void loop(void); |
|
| 18 |
+void setButton(joyReport_t *joy, uint8_t button); |
|
| 19 |
+void clearButton(joyReport_t *joy, uint8_t button); |
|
| 20 |
+void sendJoyReport(joyReport_t *report); |
|
| 21 |
+ |
|
| 22 |
+ |
|
| 23 |
+void setup() |
|
| 24 |
+{
|
|
| 25 |
+ //set pin to input Button |
|
| 26 |
+ for ( int portId = 02; portId < 13; portId ++ ) |
|
| 27 |
+ {
|
|
| 28 |
+ pinMode( portId, INPUT_PULLUP); |
|
| 29 |
+ } |
|
| 30 |
+ Serial.begin(115200); |
|
| 31 |
+ delay(200); |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+ for (uint8_t ind = 0; ind < 8; ind++) {
|
|
| 35 |
+ joyReport.axis[ind] = ind * 1000; |
|
| 36 |
+ } |
|
| 37 |
+ for (uint8_t ind = 0; ind < sizeof(joyReport.button); ind++) {
|
|
| 38 |
+ joyReport.button[ind] = 0; |
|
| 39 |
+ } |
|
| 40 |
+} |
|
| 41 |
+ |
|
| 42 |
+// Send an HID report to the USB interface |
|
| 43 |
+void sendJoyReport(struct joyReport_t *report) |
|
| 44 |
+{
|
|
| 45 |
+#ifndef DEBUG |
|
| 46 |
+ Serial.write((uint8_t *)report, sizeof(joyReport_t)); |
|
| 47 |
+#else |
|
| 48 |
+ // dump human readable output for debugging |
|
| 49 |
+ for (uint8_t ind = 0; ind < NUM_AXES; ind++) {
|
|
| 50 |
+ Serial.print("axis[");
|
|
| 51 |
+ Serial.print(ind); |
|
| 52 |
+ Serial.print("]= ");
|
|
| 53 |
+ Serial.print(report->axis[ind]); |
|
| 54 |
+ Serial.print(" ");
|
|
| 55 |
+ } |
|
| 56 |
+ Serial.println(); |
|
| 57 |
+ for (uint8_t ind = 0; ind < NUM_BUTTONS / 8; ind++) {
|
|
| 58 |
+ Serial.print("button[");
|
|
| 59 |
+ Serial.print(ind); |
|
| 60 |
+ Serial.print("]= ");
|
|
| 61 |
+ Serial.print(report->button[ind], HEX); |
|
| 62 |
+ Serial.print(" ");
|
|
| 63 |
+ } |
|
| 64 |
+ Serial.println(); |
|
| 65 |
+#endif |
|
| 66 |
+} |
|
| 67 |
+ |
|
| 68 |
+// turn a button on |
|
| 69 |
+void setButton(joyReport_t *joy, uint8_t button) |
|
| 70 |
+{
|
|
| 71 |
+ uint8_t index = button / 8; |
|
| 72 |
+ uint8_t bit = button - 8 * index; |
|
| 73 |
+ |
|
| 74 |
+ joy->button[index] |= 1 << bit; |
|
| 75 |
+} |
|
| 76 |
+ |
|
| 77 |
+// turn a button off |
|
| 78 |
+void clearButton(joyReport_t *joy, uint8_t button) |
|
| 79 |
+{
|
|
| 80 |
+ uint8_t index = button / 8; |
|
| 81 |
+ uint8_t bit = button - 8 * index; |
|
| 82 |
+ |
|
| 83 |
+ joy->button[index] &= ~(1 << bit); |
|
| 84 |
+} |
|
| 85 |
+ |
|
| 86 |
+/* |
|
| 87 |
+ Read Digital port for Button |
|
| 88 |
+ Read Analog port for axis |
|
| 89 |
+*/ |
|
| 90 |
+void loop() |
|
| 91 |
+{
|
|
| 92 |
+ |
|
| 93 |
+ for (int bt = 1; bt < 13; bt ++) |
|
| 94 |
+ {
|
|
| 95 |
+ // btn[bt] = digitalRead(bt + 1); |
|
| 96 |
+ btn[bt] = LOW; |
|
| 97 |
+ } |
|
| 98 |
+ |
|
| 99 |
+ for (int on = 01; on < 13; on++) |
|
| 100 |
+ {
|
|
| 101 |
+ if (btn[on] == LOW) |
|
| 102 |
+ {
|
|
| 103 |
+ setButton(&joyReport, on + 16); |
|
| 104 |
+ |
|
| 105 |
+ delay(1); |
|
| 106 |
+ } |
|
| 107 |
+ for (int on = 01; on < 13; on++) |
|
| 108 |
+ {
|
|
| 109 |
+ if (btn[on] == HIGH) |
|
| 110 |
+ {
|
|
| 111 |
+ clearButton(&joyReport, on + 16); |
|
| 112 |
+ } |
|
| 113 |
+ |
|
| 114 |
+ } |
|
| 115 |
+ } |
|
| 116 |
+ |
|
| 117 |
+ |
|
| 118 |
+//for (uint8_t axis = 0; axis < 1; axis++) {
|
|
| 119 |
+// joyReport.axis[axis] = map(analogRead(axis), 0, 1023, -32768, 32767 ); |
|
| 120 |
+//} |
|
| 121 |
+ |
|
| 122 |
+ joyReport.axis[0] = 0; |
|
| 123 |
+ joyReport.axis[1] = 0; |
|
| 124 |
+ joyReport.axis[2] = map(analogRead(2), 0, 1023, -32768, 32767 ); |
|
| 125 |
+ joyReport.axis[3] = map(analogRead(3), 0, 1023, -32768, 32767 ); |
|
| 126 |
+ joyReport.axis[4] = map(analogRead(4), 0, 1023, -32768, 32767 ); |
|
| 127 |
+ joyReport.axis[5] = 0; |
|
| 128 |
+ joyReport.axis[6] = 0; |
|
| 129 |
+ joyReport.axis[7] = 0; |
|
| 130 |
+ joyReport.axis[8] = 0; |
|
| 131 |
+ |
|
| 132 |
+ //Send Data to HID |
|
| 133 |
+ sendJoyReport(&joyReport); |
|
| 134 |
+ |
|
| 135 |
+ delay(35); |
|
| 136 |
+ fulloff = 0; |
|
| 137 |
+} |
| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,137 @@ |
| 1 |
+ |
|
| 2 |
+#undef DEBUG |
|
| 3 |
+ |
|
| 4 |
+#define NUM_BUTTONS 40 // you don't need to change this value |
|
| 5 |
+#define NUM_AXES 8 // 6 axes to UNO, and 8 to MEGA. If you are using UNO, don't need to change this value. |
|
| 6 |
+ |
|
| 7 |
+typedef struct joyReport_t {
|
|
| 8 |
+ int16_t axis[NUM_AXES]; |
|
| 9 |
+ uint8_t button[(NUM_BUTTONS + 7) / 8]; // 8 buttons per byte |
|
| 10 |
+} joyReport_t; |
|
| 11 |
+ |
|
| 12 |
+joyReport_t joyReport; |
|
| 13 |
+ |
|
| 14 |
+uint8_t btn[12]; |
|
| 15 |
+int fulloff = 0; |
|
| 16 |
+void setup(void); |
|
| 17 |
+void loop(void); |
|
| 18 |
+void setButton(joyReport_t *joy, uint8_t button); |
|
| 19 |
+void clearButton(joyReport_t *joy, uint8_t button); |
|
| 20 |
+void sendJoyReport(joyReport_t *report); |
|
| 21 |
+ |
|
| 22 |
+ |
|
| 23 |
+void setup() |
|
| 24 |
+{
|
|
| 25 |
+ //set pin to input Button |
|
| 26 |
+ for ( int portId = 02; portId < 13; portId ++ ) |
|
| 27 |
+ {
|
|
| 28 |
+ pinMode( portId, INPUT_PULLUP); |
|
| 29 |
+ } |
|
| 30 |
+ Serial.begin(115200); |
|
| 31 |
+ delay(200); |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+ for (uint8_t ind = 0; ind < 8; ind++) {
|
|
| 35 |
+ joyReport.axis[ind] = ind * 1000; |
|
| 36 |
+ } |
|
| 37 |
+ for (uint8_t ind = 0; ind < sizeof(joyReport.button); ind++) {
|
|
| 38 |
+ joyReport.button[ind] = 0; |
|
| 39 |
+ } |
|
| 40 |
+} |
|
| 41 |
+ |
|
| 42 |
+// Send an HID report to the USB interface |
|
| 43 |
+void sendJoyReport(struct joyReport_t *report) |
|
| 44 |
+{
|
|
| 45 |
+#ifndef DEBUG |
|
| 46 |
+ Serial.write((uint8_t *)report, sizeof(joyReport_t)); |
|
| 47 |
+#else |
|
| 48 |
+ // dump human readable output for debugging |
|
| 49 |
+ for (uint8_t ind = 0; ind < NUM_AXES; ind++) {
|
|
| 50 |
+ Serial.print("axis[");
|
|
| 51 |
+ Serial.print(ind); |
|
| 52 |
+ Serial.print("]= ");
|
|
| 53 |
+ Serial.print(report->axis[ind]); |
|
| 54 |
+ Serial.print(" ");
|
|
| 55 |
+ } |
|
| 56 |
+ Serial.println(); |
|
| 57 |
+ for (uint8_t ind = 0; ind < NUM_BUTTONS / 8; ind++) {
|
|
| 58 |
+ Serial.print("button[");
|
|
| 59 |
+ Serial.print(ind); |
|
| 60 |
+ Serial.print("]= ");
|
|
| 61 |
+ Serial.print(report->button[ind], HEX); |
|
| 62 |
+ Serial.print(" ");
|
|
| 63 |
+ } |
|
| 64 |
+ Serial.println(); |
|
| 65 |
+#endif |
|
| 66 |
+} |
|
| 67 |
+ |
|
| 68 |
+// turn a button on |
|
| 69 |
+void setButton(joyReport_t *joy, uint8_t button) |
|
| 70 |
+{
|
|
| 71 |
+ uint8_t index = button / 8; |
|
| 72 |
+ uint8_t bit = button - 8 * index; |
|
| 73 |
+ |
|
| 74 |
+ joy->button[index] |= 1 << bit; |
|
| 75 |
+} |
|
| 76 |
+ |
|
| 77 |
+// turn a button off |
|
| 78 |
+void clearButton(joyReport_t *joy, uint8_t button) |
|
| 79 |
+{
|
|
| 80 |
+ uint8_t index = button / 8; |
|
| 81 |
+ uint8_t bit = button - 8 * index; |
|
| 82 |
+ |
|
| 83 |
+ joy->button[index] &= ~(1 << bit); |
|
| 84 |
+} |
|
| 85 |
+ |
|
| 86 |
+/* |
|
| 87 |
+ Read Digital port for Button |
|
| 88 |
+ Read Analog port for axis |
|
| 89 |
+*/ |
|
| 90 |
+void loop() |
|
| 91 |
+{
|
|
| 92 |
+ |
|
| 93 |
+ for (int bt = 1; bt < 13; bt ++) |
|
| 94 |
+ {
|
|
| 95 |
+ // btn[bt] = digitalRead(bt + 1); |
|
| 96 |
+ btn[bt] = LOW; |
|
| 97 |
+ } |
|
| 98 |
+ |
|
| 99 |
+ for (int on = 01; on < 13; on++) |
|
| 100 |
+ {
|
|
| 101 |
+ if (btn[on] == LOW) |
|
| 102 |
+ {
|
|
| 103 |
+ setButton(&joyReport, on + 16); |
|
| 104 |
+ |
|
| 105 |
+ delay(1); |
|
| 106 |
+ } |
|
| 107 |
+ for (int on = 01; on < 13; on++) |
|
| 108 |
+ {
|
|
| 109 |
+ if (btn[on] == HIGH) |
|
| 110 |
+ {
|
|
| 111 |
+ clearButton(&joyReport, on + 16); |
|
| 112 |
+ } |
|
| 113 |
+ |
|
| 114 |
+ } |
|
| 115 |
+ } |
|
| 116 |
+ |
|
| 117 |
+ |
|
| 118 |
+//for (uint8_t axis = 0; axis < 1; axis++) {
|
|
| 119 |
+// joyReport.axis[axis] = map(analogRead(axis), 0, 1023, -32768, 32767 ); |
|
| 120 |
+//} |
|
| 121 |
+ |
|
| 122 |
+ joyReport.axis[0] = 0; |
|
| 123 |
+ joyReport.axis[1] = 0; |
|
| 124 |
+ joyReport.axis[2] = map(analogRead(2), 0, 1023, -32768, 32767 ); |
|
| 125 |
+ joyReport.axis[3] = map(analogRead(3), 0, 1023, -32768, 32767 ); |
|
| 126 |
+ joyReport.axis[4] = map(analogRead(4), 0, 1023, -32768, 32767 ); |
|
| 127 |
+ joyReport.axis[5] = 0; |
|
| 128 |
+ joyReport.axis[6] = 0; |
|
| 129 |
+ joyReport.axis[7] = 0; |
|
| 130 |
+ joyReport.axis[8] = 0; |
|
| 131 |
+ |
|
| 132 |
+ //Send Data to HID |
|
| 133 |
+ sendJoyReport(&joyReport); |
|
| 134 |
+ |
|
| 135 |
+ delay(35); |
|
| 136 |
+ fulloff = 0; |
|
| 137 |
+} |