GamePortAdapter
Dependencies: mbed-rtos mbed USBDevice USBJoystick
main.cpp@2:c7f76dac3723, 2017-12-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |