GamePortAdapter

Dependencies:   mbed-rtos mbed USBDevice USBJoystick

main.cpp

Committer:
obsoleet37
Date:
2017-12-07
Revision:
1:ec3596dd0670
Parent:
0:8b4f60bf3f80
Child:
2:c7f76dac3723

File content as of revision 1:ec3596dd0670:

#include "mbed.h"
#include "rtos.h"

Serial pc(USBTX, USBRX);
//macOS: screen /dev/tty.usbmodem{num} {baud rate}
//Windows:Realterm lol

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);
    }
}