You can use your FRDM-K64F device as a joypad.

Dependencies:   FXOS8700Q mbed

Check my repo for a compatible game using K64F. Currently works on Max OSX, can be implemented on Linux by changing Serial Port configuration.

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?

UserRevisionLine numberNew 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 }