Guillaume Mourozeau
/
Project_mbedPC
1st Version of LiveXboxRobot. Mbed connected to PC.
main.cpp@0:b1015ef37a9e, 2016-04-28 (annotated)
- Committer:
- GuillaumeMrzo
- Date:
- Thu Apr 28 12:11:44 2016 +0000
- Revision:
- 0:b1015ef37a9e
1st Version of LiveXboxRobot project. PC side.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GuillaumeMrzo | 0:b1015ef37a9e | 1 | #include "mbed.h" |
GuillaumeMrzo | 0:b1015ef37a9e | 2 | #include "stdio.h" |
GuillaumeMrzo | 0:b1015ef37a9e | 3 | |
GuillaumeMrzo | 0:b1015ef37a9e | 4 | Serial pc(USBTX, USBRX); |
GuillaumeMrzo | 0:b1015ef37a9e | 5 | DigitalOut myled(LED3);//Create variable for Led 3 on the mbed |
GuillaumeMrzo | 0:b1015ef37a9e | 6 | |
GuillaumeMrzo | 0:b1015ef37a9e | 7 | // Character from the keyboard |
GuillaumeMrzo | 0:b1015ef37a9e | 8 | char key; |
GuillaumeMrzo | 0:b1015ef37a9e | 9 | |
GuillaumeMrzo | 0:b1015ef37a9e | 10 | // xbee |
GuillaumeMrzo | 0:b1015ef37a9e | 11 | char X; |
GuillaumeMrzo | 0:b1015ef37a9e | 12 | DigitalOut rst1(p8); |
GuillaumeMrzo | 0:b1015ef37a9e | 13 | Serial xbee(p9, p10); |
GuillaumeMrzo | 0:b1015ef37a9e | 14 | DigitalOut rst(p8); |
GuillaumeMrzo | 0:b1015ef37a9e | 15 | |
GuillaumeMrzo | 0:b1015ef37a9e | 16 | |
GuillaumeMrzo | 0:b1015ef37a9e | 17 | // LEDs |
GuillaumeMrzo | 0:b1015ef37a9e | 18 | DigitalOut ledL(LED1); |
GuillaumeMrzo | 0:b1015ef37a9e | 19 | DigitalOut ledR(LED4); |
GuillaumeMrzo | 0:b1015ef37a9e | 20 | |
GuillaumeMrzo | 0:b1015ef37a9e | 21 | |
GuillaumeMrzo | 0:b1015ef37a9e | 22 | // -------------------- Callback Xbee receive ---------------------- // |
GuillaumeMrzo | 0:b1015ef37a9e | 23 | void xbee_recv(){ |
GuillaumeMrzo | 0:b1015ef37a9e | 24 | while(xbee.readable()) { |
GuillaumeMrzo | 0:b1015ef37a9e | 25 | if(xbee.getc() == 'R'){ |
GuillaumeMrzo | 0:b1015ef37a9e | 26 | pc.printf("R%i\r\n", xbee.getc()); |
GuillaumeMrzo | 0:b1015ef37a9e | 27 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 28 | if(xbee.getc() == 'L'){ |
GuillaumeMrzo | 0:b1015ef37a9e | 29 | pc.printf("L%i\r\n", xbee.getc()); |
GuillaumeMrzo | 0:b1015ef37a9e | 30 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 31 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 32 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 33 | |
GuillaumeMrzo | 0:b1015ef37a9e | 34 | |
GuillaumeMrzo | 0:b1015ef37a9e | 35 | |
GuillaumeMrzo | 0:b1015ef37a9e | 36 | // -------------------- Callback PC ---------------------- // |
GuillaumeMrzo | 0:b1015ef37a9e | 37 | void pc_recv(){ |
GuillaumeMrzo | 0:b1015ef37a9e | 38 | |
GuillaumeMrzo | 0:b1015ef37a9e | 39 | key=pc.getc(); |
GuillaumeMrzo | 0:b1015ef37a9e | 40 | |
GuillaumeMrzo | 0:b1015ef37a9e | 41 | //If the keypress was an arrow key |
GuillaumeMrzo | 0:b1015ef37a9e | 42 | if(key==0x1B) { |
GuillaumeMrzo | 0:b1015ef37a9e | 43 | key = pc.getc(); |
GuillaumeMrzo | 0:b1015ef37a9e | 44 | if (key == 0x5B) { //Check again! |
GuillaumeMrzo | 0:b1015ef37a9e | 45 | key = pc.getc(); |
GuillaumeMrzo | 0:b1015ef37a9e | 46 | switch(key) { //Check to see which arrow key... |
GuillaumeMrzo | 0:b1015ef37a9e | 47 | case 0x41: |
GuillaumeMrzo | 0:b1015ef37a9e | 48 | pc.putc('U'); |
GuillaumeMrzo | 0:b1015ef37a9e | 49 | xbee.putc('U'); |
GuillaumeMrzo | 0:b1015ef37a9e | 50 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 51 | case 0x42: |
GuillaumeMrzo | 0:b1015ef37a9e | 52 | pc.putc('D'); |
GuillaumeMrzo | 0:b1015ef37a9e | 53 | xbee.putc('D'); |
GuillaumeMrzo | 0:b1015ef37a9e | 54 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 55 | case 0x43: |
GuillaumeMrzo | 0:b1015ef37a9e | 56 | pc.putc('R'); |
GuillaumeMrzo | 0:b1015ef37a9e | 57 | xbee.putc('R'); |
GuillaumeMrzo | 0:b1015ef37a9e | 58 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 59 | case 0x44: |
GuillaumeMrzo | 0:b1015ef37a9e | 60 | pc.putc('L'); |
GuillaumeMrzo | 0:b1015ef37a9e | 61 | xbee.putc('L'); |
GuillaumeMrzo | 0:b1015ef37a9e | 62 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 63 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 64 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 65 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 66 | else{ |
GuillaumeMrzo | 0:b1015ef37a9e | 67 | switch (key) { |
GuillaumeMrzo | 0:b1015ef37a9e | 68 | case '1': // key 1 |
GuillaumeMrzo | 0:b1015ef37a9e | 69 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 70 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 71 | case '2': // key 2 |
GuillaumeMrzo | 0:b1015ef37a9e | 72 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 73 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 74 | case '3': // key 3 |
GuillaumeMrzo | 0:b1015ef37a9e | 75 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 76 | pc.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 77 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 78 | case '4': // key 4 |
GuillaumeMrzo | 0:b1015ef37a9e | 79 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 80 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 81 | case 'U': // key U / GUI up |
GuillaumeMrzo | 0:b1015ef37a9e | 82 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 83 | pc.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 84 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 85 | case 'D': // key D / GUI down |
GuillaumeMrzo | 0:b1015ef37a9e | 86 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 87 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 88 | case 'L': // key L / GUI left |
GuillaumeMrzo | 0:b1015ef37a9e | 89 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 90 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 91 | case 'R': // key R / GUI right |
GuillaumeMrzo | 0:b1015ef37a9e | 92 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 93 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 94 | case 'A': // key U / GUI right |
GuillaumeMrzo | 0:b1015ef37a9e | 95 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 96 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 97 | case 'B': // key D / GUI right |
GuillaumeMrzo | 0:b1015ef37a9e | 98 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 99 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 100 | case 'C': // key L / GUI right |
GuillaumeMrzo | 0:b1015ef37a9e | 101 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 102 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 103 | case 'E': // key R / GUI right |
GuillaumeMrzo | 0:b1015ef37a9e | 104 | xbee.putc(key); |
GuillaumeMrzo | 0:b1015ef37a9e | 105 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 106 | default: |
GuillaumeMrzo | 0:b1015ef37a9e | 107 | break; |
GuillaumeMrzo | 0:b1015ef37a9e | 108 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 109 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 110 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 111 | |
GuillaumeMrzo | 0:b1015ef37a9e | 112 | |
GuillaumeMrzo | 0:b1015ef37a9e | 113 | // -------------------- Callback XBox controller ---------------------- // |
GuillaumeMrzo | 0:b1015ef37a9e | 114 | |
GuillaumeMrzo | 0:b1015ef37a9e | 115 | |
GuillaumeMrzo | 0:b1015ef37a9e | 116 | |
GuillaumeMrzo | 0:b1015ef37a9e | 117 | |
GuillaumeMrzo | 0:b1015ef37a9e | 118 | int main() { |
GuillaumeMrzo | 0:b1015ef37a9e | 119 | |
GuillaumeMrzo | 0:b1015ef37a9e | 120 | // Initialize Xbee |
GuillaumeMrzo | 0:b1015ef37a9e | 121 | rst1 = 0; |
GuillaumeMrzo | 0:b1015ef37a9e | 122 | wait_ms(1); |
GuillaumeMrzo | 0:b1015ef37a9e | 123 | rst1 = 1; |
GuillaumeMrzo | 0:b1015ef37a9e | 124 | wait_ms(1); |
GuillaumeMrzo | 0:b1015ef37a9e | 125 | |
GuillaumeMrzo | 0:b1015ef37a9e | 126 | pc.attach(&pc_recv, Serial::RxIrq); |
GuillaumeMrzo | 0:b1015ef37a9e | 127 | xbee.attach(&xbee_recv, Serial::RxIrq); |
GuillaumeMrzo | 0:b1015ef37a9e | 128 | |
GuillaumeMrzo | 0:b1015ef37a9e | 129 | while(1){ |
GuillaumeMrzo | 0:b1015ef37a9e | 130 | wait_ms(1); |
GuillaumeMrzo | 0:b1015ef37a9e | 131 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 132 | } |
GuillaumeMrzo | 0:b1015ef37a9e | 133 |