GamePortAdapter
Dependencies: mbed-rtos mbed USBDevice USBJoystick
Diff: main.cpp
- Revision:
- 0:8b4f60bf3f80
- Child:
- 1:ec3596dd0670
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 07 21:15:37 2017 +0000 @@ -0,0 +1,104 @@ +#include "mbed.h" +#include "rtos.h" + +Serial pc(USBTX, USBRX); +//macOS: screen /dev/tty.usbmodem{num} {baud rate} + +Thread analogThread; + +Timer y1_t; +Timer x1_t; +Timer y2_t; +Timer x2_t; + +InterruptIn y1(p16); +InterruptIn x1(p15); +InterruptIn y2(p18); +InterruptIn x2(p17); + +volatile int y1_pulse; +volatile int x1_pulse; +volatile int y2_pulse; +volatile int x2_pulse; + +DigitalOut trig(p19); + +void start_y1() { + y1_t.reset(); + y1_t.start(); +} + +void stop_y1() { + y1_t.stop(); + y1_pulse = y1_t.read_us(); +} + +void start_x1() { + x1_t.reset(); + x1_t.start(); +} + +void stop_x1() { + x1_t.stop(); + x1_pulse = x1_t.read_us(); +} +void start_y2() { + y2_t.reset(); + y2_t.start(); +} + +void stop_y2() { + y2_t.stop(); + y2_pulse = y2_t.read_us(); +} + +void start_x2() { + x2_t.reset(); + x2_t.start(); +} + +void stop_x2() { + x2_t.stop(); + x2_pulse = x2_t.read_us(); +} + + +void analog_thread() { + trig = 1; + y1_pulse = 0; + x1_pulse = 0; + y2_pulse = 0; + x2_pulse = 0; + + y1.rise(&start_y1); + y1.fall(&stop_y1); + + x1.rise(&start_x1); + x1.fall(&stop_x1); + + y2.rise(&start_y2); + y2.fall(&stop_y2); + + x2.rise(&start_x2); + x2.fall(&stop_x2); + + while(1) { + trig = 0; + trig = 1; + wait(.1); + } +} + +int main() { + pc.printf("Beginning Joystick Test...\r\n"); + pc.printf("---------------------------------\r\n"); + + analogThread.start(analog_thread); + + while(1) { + pc.printf("Joystick 1 - %d, %d \r\n", x1_pulse, y1_pulse); + pc.printf("Joystick 2 - %d, %d \r\n", x2_pulse, y2_pulse); + pc.printf("\r\n"); + wait(.5); + } +}