1st Version of LiveXboxRobot. Mbed connected to PC.

Dependencies:   mbed

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?

UserRevisionLine numberNew 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