You can use your FRDM-K64F device as a joypad.
Check my repo for a compatible game using K64F. Currently works on Max OSX, can be implemented on Linux by changing Serial Port configuration.
main.cpp@1:cb4a1b11de74, 2016-02-24 (annotated)
- Committer:
- co838_gtvl2
- Date:
- Wed Feb 24 20:40:54 2016 +0000
- Revision:
- 1:cb4a1b11de74
- Parent:
- 0:9c531a8dcb06
Added 5 way Joystick support. (configured for horizontal use)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
co838_gtvl2 | 0:9c531a8dcb06 | 1 | #include "mbed.h" |
co838_gtvl2 | 0:9c531a8dcb06 | 2 | #include "FXOS8700Q.h" |
co838_gtvl2 | 0:9c531a8dcb06 | 3 | |
co838_gtvl2 | 1:cb4a1b11de74 | 4 | // Serial link to the pc |
co838_gtvl2 | 0:9c531a8dcb06 | 5 | Serial pc(USBTX, USBRX); |
co838_gtvl2 | 1:cb4a1b11de74 | 6 | // Accelerometer |
co838_gtvl2 | 0:9c531a8dcb06 | 7 | FXOS8700Q_acc accel(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); |
co838_gtvl2 | 1:cb4a1b11de74 | 8 | // Joystick |
co838_gtvl2 | 1:cb4a1b11de74 | 9 | DigitalIn up(A2); |
co838_gtvl2 | 1:cb4a1b11de74 | 10 | DigitalIn down(A3); |
co838_gtvl2 | 1:cb4a1b11de74 | 11 | DigitalIn left(A4); |
co838_gtvl2 | 1:cb4a1b11de74 | 12 | DigitalIn right(A5); |
co838_gtvl2 | 1:cb4a1b11de74 | 13 | DigitalIn fire(D4); |
co838_gtvl2 | 0:9c531a8dcb06 | 14 | |
co838_gtvl2 | 0:9c531a8dcb06 | 15 | void pc_interrupt(void) |
co838_gtvl2 | 0:9c531a8dcb06 | 16 | { |
co838_gtvl2 | 0:9c531a8dcb06 | 17 | pc.getc(); |
co838_gtvl2 | 0:9c531a8dcb06 | 18 | int16_t accX, accY, accZ; |
co838_gtvl2 | 0:9c531a8dcb06 | 19 | accel.getX(&accX); |
co838_gtvl2 | 0:9c531a8dcb06 | 20 | accel.getY(&accY); |
co838_gtvl2 | 0:9c531a8dcb06 | 21 | accel.getZ(&accZ); |
co838_gtvl2 | 1:cb4a1b11de74 | 22 | pc.printf("%d;%d;%d;%d;%d;%d;%d;%d;\r\n", accX, accY, accZ, right ? 1 : 0, down ? 1 : 0, left ? 1 : 0, up ? 1 : 0, fire ? 1 : 0); |
co838_gtvl2 | 0:9c531a8dcb06 | 23 | } |
co838_gtvl2 | 0:9c531a8dcb06 | 24 | |
co838_gtvl2 | 0:9c531a8dcb06 | 25 | int main(void) |
co838_gtvl2 | 0:9c531a8dcb06 | 26 | { |
co838_gtvl2 | 0:9c531a8dcb06 | 27 | pc.baud(38400); |
co838_gtvl2 | 0:9c531a8dcb06 | 28 | pc.attach(&pc_interrupt); |
co838_gtvl2 | 0:9c531a8dcb06 | 29 | |
co838_gtvl2 | 0:9c531a8dcb06 | 30 | accel.enable(); |
co838_gtvl2 | 1:cb4a1b11de74 | 31 | wait(.01); |
co838_gtvl2 | 0:9c531a8dcb06 | 32 | while (true) { |
co838_gtvl2 | 0:9c531a8dcb06 | 33 | sleep(); |
co838_gtvl2 | 0:9c531a8dcb06 | 34 | } |
co838_gtvl2 | 0:9c531a8dcb06 | 35 | accel.disable(); |
co838_gtvl2 | 0:9c531a8dcb06 | 36 | } |