GamePortAdapter

Dependencies:   mbed-rtos mbed USBDevice USBJoystick

Committer:
obsoleet37
Date:
Mon Dec 11 22:30:59 2017 +0000
Revision:
2:c7f76dac3723
Parent:
1:ec3596dd0670
Child:
3:20f3136e49fa
Added button reading

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cblackstone7 0:8b4f60bf3f80 1 #include "mbed.h"
cblackstone7 0:8b4f60bf3f80 2 #include "rtos.h"
cblackstone7 0:8b4f60bf3f80 3
cblackstone7 0:8b4f60bf3f80 4 Serial pc(USBTX, USBRX);
cblackstone7 0:8b4f60bf3f80 5 //macOS: screen /dev/tty.usbmodem{num} {baud rate}
obsoleet37 2:c7f76dac3723 6 //Windows: Realterm lol
cblackstone7 0:8b4f60bf3f80 7
cblackstone7 0:8b4f60bf3f80 8 Thread analogThread;
cblackstone7 0:8b4f60bf3f80 9
cblackstone7 0:8b4f60bf3f80 10 Timer y1_t;
cblackstone7 0:8b4f60bf3f80 11 Timer x1_t;
cblackstone7 0:8b4f60bf3f80 12 Timer y2_t;
cblackstone7 0:8b4f60bf3f80 13 Timer x2_t;
cblackstone7 0:8b4f60bf3f80 14
cblackstone7 0:8b4f60bf3f80 15 InterruptIn y1(p16);
cblackstone7 0:8b4f60bf3f80 16 InterruptIn x1(p15);
cblackstone7 0:8b4f60bf3f80 17 InterruptIn y2(p18);
cblackstone7 0:8b4f60bf3f80 18 InterruptIn x2(p17);
cblackstone7 0:8b4f60bf3f80 19
cblackstone7 0:8b4f60bf3f80 20 volatile int y1_pulse;
cblackstone7 0:8b4f60bf3f80 21 volatile int x1_pulse;
cblackstone7 0:8b4f60bf3f80 22 volatile int y2_pulse;
cblackstone7 0:8b4f60bf3f80 23 volatile int x2_pulse;
obsoleet37 2:c7f76dac3723 24 volatile int buts;
cblackstone7 0:8b4f60bf3f80 25
cblackstone7 0:8b4f60bf3f80 26 DigitalOut trig(p19);
cblackstone7 0:8b4f60bf3f80 27
obsoleet37 2:c7f76dac3723 28 BusIn buttons(p21, p22, p23, p24);
obsoleet37 2:c7f76dac3723 29
cblackstone7 0:8b4f60bf3f80 30 void start_y1() {
cblackstone7 0:8b4f60bf3f80 31 y1_t.reset();
cblackstone7 0:8b4f60bf3f80 32 y1_t.start();
cblackstone7 0:8b4f60bf3f80 33 }
cblackstone7 0:8b4f60bf3f80 34
cblackstone7 0:8b4f60bf3f80 35 void stop_y1() {
cblackstone7 0:8b4f60bf3f80 36 y1_t.stop();
cblackstone7 0:8b4f60bf3f80 37 y1_pulse = y1_t.read_us();
cblackstone7 0:8b4f60bf3f80 38 }
cblackstone7 0:8b4f60bf3f80 39
cblackstone7 0:8b4f60bf3f80 40 void start_x1() {
cblackstone7 0:8b4f60bf3f80 41 x1_t.reset();
cblackstone7 0:8b4f60bf3f80 42 x1_t.start();
cblackstone7 0:8b4f60bf3f80 43 }
cblackstone7 0:8b4f60bf3f80 44
cblackstone7 0:8b4f60bf3f80 45 void stop_x1() {
cblackstone7 0:8b4f60bf3f80 46 x1_t.stop();
cblackstone7 0:8b4f60bf3f80 47 x1_pulse = x1_t.read_us();
cblackstone7 0:8b4f60bf3f80 48 }
cblackstone7 0:8b4f60bf3f80 49 void start_y2() {
cblackstone7 0:8b4f60bf3f80 50 y2_t.reset();
cblackstone7 0:8b4f60bf3f80 51 y2_t.start();
cblackstone7 0:8b4f60bf3f80 52 }
cblackstone7 0:8b4f60bf3f80 53
cblackstone7 0:8b4f60bf3f80 54 void stop_y2() {
cblackstone7 0:8b4f60bf3f80 55 y2_t.stop();
cblackstone7 0:8b4f60bf3f80 56 y2_pulse = y2_t.read_us();
cblackstone7 0:8b4f60bf3f80 57 }
cblackstone7 0:8b4f60bf3f80 58
cblackstone7 0:8b4f60bf3f80 59 void start_x2() {
cblackstone7 0:8b4f60bf3f80 60 x2_t.reset();
cblackstone7 0:8b4f60bf3f80 61 x2_t.start();
cblackstone7 0:8b4f60bf3f80 62 }
cblackstone7 0:8b4f60bf3f80 63
cblackstone7 0:8b4f60bf3f80 64 void stop_x2() {
cblackstone7 0:8b4f60bf3f80 65 x2_t.stop();
cblackstone7 0:8b4f60bf3f80 66 x2_pulse = x2_t.read_us();
cblackstone7 0:8b4f60bf3f80 67 }
cblackstone7 0:8b4f60bf3f80 68
cblackstone7 0:8b4f60bf3f80 69
cblackstone7 0:8b4f60bf3f80 70 void analog_thread() {
cblackstone7 0:8b4f60bf3f80 71 trig = 1;
cblackstone7 0:8b4f60bf3f80 72 y1_pulse = 0;
cblackstone7 0:8b4f60bf3f80 73 x1_pulse = 0;
cblackstone7 0:8b4f60bf3f80 74 y2_pulse = 0;
cblackstone7 0:8b4f60bf3f80 75 x2_pulse = 0;
cblackstone7 0:8b4f60bf3f80 76
cblackstone7 0:8b4f60bf3f80 77 y1.rise(&start_y1);
cblackstone7 0:8b4f60bf3f80 78 y1.fall(&stop_y1);
cblackstone7 0:8b4f60bf3f80 79
cblackstone7 0:8b4f60bf3f80 80 x1.rise(&start_x1);
cblackstone7 0:8b4f60bf3f80 81 x1.fall(&stop_x1);
cblackstone7 0:8b4f60bf3f80 82
cblackstone7 0:8b4f60bf3f80 83 y2.rise(&start_y2);
cblackstone7 0:8b4f60bf3f80 84 y2.fall(&stop_y2);
cblackstone7 0:8b4f60bf3f80 85
cblackstone7 0:8b4f60bf3f80 86 x2.rise(&start_x2);
cblackstone7 0:8b4f60bf3f80 87 x2.fall(&stop_x2);
obsoleet37 2:c7f76dac3723 88
obsoleet37 2:c7f76dac3723 89 buttons.mode(PullUp);
cblackstone7 0:8b4f60bf3f80 90
cblackstone7 0:8b4f60bf3f80 91 while(1) {
cblackstone7 0:8b4f60bf3f80 92 trig = 0;
cblackstone7 0:8b4f60bf3f80 93 trig = 1;
obsoleet37 2:c7f76dac3723 94 buts = ~buttons&0xF;
cblackstone7 0:8b4f60bf3f80 95 wait(.1);
cblackstone7 0:8b4f60bf3f80 96 }
cblackstone7 0:8b4f60bf3f80 97 }
cblackstone7 0:8b4f60bf3f80 98
cblackstone7 0:8b4f60bf3f80 99 int main() {
cblackstone7 0:8b4f60bf3f80 100 pc.printf("Beginning Joystick Test...\r\n");
cblackstone7 0:8b4f60bf3f80 101 pc.printf("---------------------------------\r\n");
cblackstone7 0:8b4f60bf3f80 102
cblackstone7 0:8b4f60bf3f80 103 analogThread.start(analog_thread);
cblackstone7 0:8b4f60bf3f80 104
cblackstone7 0:8b4f60bf3f80 105 while(1) {
obsoleet37 2:c7f76dac3723 106 pc.printf("Joystick 1 - %d, %d, %X \r\n", x1_pulse, y1_pulse, buts&0x3);
obsoleet37 2:c7f76dac3723 107 pc.printf("Joystick 2 - %d, %d, %X \r\n", x2_pulse, y2_pulse, (buts>>2)&0x3);
cblackstone7 0:8b4f60bf3f80 108 pc.printf("\r\n");
cblackstone7 0:8b4f60bf3f80 109 wait(.5);
cblackstone7 0:8b4f60bf3f80 110 }
cblackstone7 0:8b4f60bf3f80 111 }