Gerardo Carmona
/
RobotV1
Robot Competition V1
main.cpp@2:aae3b2c0881c, 2015-12-17 (annotated)
- Committer:
- gcarmonar
- Date:
- Thu Dec 17 18:24:42 2015 +0000
- Revision:
- 2:aae3b2c0881c
- Parent:
- 1:1bea5dcd4d6f
correciones d ebugs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gcarmonar | 0:4a46db9b1f3e | 1 | #include "mbed.h" |
gcarmonar | 0:4a46db9b1f3e | 2 | #include "Servo.h" |
gcarmonar | 0:4a46db9b1f3e | 3 | |
gcarmonar | 0:4a46db9b1f3e | 4 | #define MAXVEL 100 // From 100 max |
gcarmonar | 2:aae3b2c0881c | 5 | #define SERINC 100 // Move micro seconds up/down |
gcarmonar | 0:4a46db9b1f3e | 6 | |
gcarmonar | 0:4a46db9b1f3e | 7 | |
gcarmonar | 0:4a46db9b1f3e | 8 | DigitalOut myled(LED1); |
gcarmonar | 0:4a46db9b1f3e | 9 | Serial pc(USBTX, USBRX); |
gcarmonar | 0:4a46db9b1f3e | 10 | Serial bt(PTE0, PTE1); |
gcarmonar | 0:4a46db9b1f3e | 11 | Servo SLF(D2); // Servo Left Front |
gcarmonar | 0:4a46db9b1f3e | 12 | Servo SLB(D3); // Servo Left Back |
gcarmonar | 0:4a46db9b1f3e | 13 | Servo SRF(D4); // Servo Right Front |
gcarmonar | 0:4a46db9b1f3e | 14 | Servo SRB(D5); // Servo Right Back |
gcarmonar | 0:4a46db9b1f3e | 15 | Servo SARM(D8); // Servo Arm |
gcarmonar | 0:4a46db9b1f3e | 16 | |
gcarmonar | 0:4a46db9b1f3e | 17 | |
gcarmonar | 0:4a46db9b1f3e | 18 | void decodeInstruction(char instruction); |
gcarmonar | 0:4a46db9b1f3e | 19 | void setSpeed(int left, int right); |
gcarmonar | 0:4a46db9b1f3e | 20 | void moveServo(int increment); |
gcarmonar | 0:4a46db9b1f3e | 21 | void redLed(int status); |
gcarmonar | 0:4a46db9b1f3e | 22 | |
gcarmonar | 0:4a46db9b1f3e | 23 | char c; |
gcarmonar | 0:4a46db9b1f3e | 24 | |
gcarmonar | 0:4a46db9b1f3e | 25 | |
gcarmonar | 0:4a46db9b1f3e | 26 | int main() { |
gcarmonar | 0:4a46db9b1f3e | 27 | bt.baud(115200); |
gcarmonar | 0:4a46db9b1f3e | 28 | while(1) { |
gcarmonar | 0:4a46db9b1f3e | 29 | if (bt.readable()){ |
gcarmonar | 0:4a46db9b1f3e | 30 | c = bt.getc(); |
gcarmonar | 0:4a46db9b1f3e | 31 | pc.printf("Received: %c\n\r", c); |
gcarmonar | 0:4a46db9b1f3e | 32 | decodeInstruction(c); |
gcarmonar | 2:aae3b2c0881c | 33 | printf("%c\n", c); |
gcarmonar | 0:4a46db9b1f3e | 34 | } |
gcarmonar | 0:4a46db9b1f3e | 35 | |
gcarmonar | 0:4a46db9b1f3e | 36 | } |
gcarmonar | 0:4a46db9b1f3e | 37 | } |
gcarmonar | 0:4a46db9b1f3e | 38 | |
gcarmonar | 0:4a46db9b1f3e | 39 | |
gcarmonar | 0:4a46db9b1f3e | 40 | void decodeInstruction(char instruction){ |
gcarmonar | 0:4a46db9b1f3e | 41 | switch (instruction){ |
gcarmonar | 1:1bea5dcd4d6f | 42 | case 'G': |
gcarmonar | 1:1bea5dcd4d6f | 43 | case 'g': |
gcarmonar | 1:1bea5dcd4d6f | 44 | setSpeed(MAXVEL, -MAXVEL); |
gcarmonar | 0:4a46db9b1f3e | 45 | break; |
gcarmonar | 0:4a46db9b1f3e | 46 | case 'A': |
gcarmonar | 0:4a46db9b1f3e | 47 | case 'a': |
gcarmonar | 1:1bea5dcd4d6f | 48 | setSpeed(-MAXVEL, -MAXVEL); |
gcarmonar | 0:4a46db9b1f3e | 49 | break; |
gcarmonar | 0:4a46db9b1f3e | 50 | case 'S': |
gcarmonar | 0:4a46db9b1f3e | 51 | case 's': |
gcarmonar | 1:1bea5dcd4d6f | 52 | setSpeed(-MAXVEL, MAXVEL); |
gcarmonar | 0:4a46db9b1f3e | 53 | break; |
gcarmonar | 0:4a46db9b1f3e | 54 | case 'D': |
gcarmonar | 0:4a46db9b1f3e | 55 | case 'd': |
gcarmonar | 1:1bea5dcd4d6f | 56 | setSpeed(+MAXVEL, +MAXVEL); |
gcarmonar | 0:4a46db9b1f3e | 57 | break; |
gcarmonar | 0:4a46db9b1f3e | 58 | case 'Q': |
gcarmonar | 0:4a46db9b1f3e | 59 | case 'q': |
gcarmonar | 0:4a46db9b1f3e | 60 | setSpeed(0,0); |
gcarmonar | 0:4a46db9b1f3e | 61 | break; |
gcarmonar | 0:4a46db9b1f3e | 62 | case 'P': |
gcarmonar | 0:4a46db9b1f3e | 63 | case 'p': |
gcarmonar | 0:4a46db9b1f3e | 64 | moveServo(SERINC); |
gcarmonar | 0:4a46db9b1f3e | 65 | break; |
gcarmonar | 0:4a46db9b1f3e | 66 | case 'L': |
gcarmonar | 0:4a46db9b1f3e | 67 | case 'l': |
gcarmonar | 0:4a46db9b1f3e | 68 | moveServo(-SERINC); |
gcarmonar | 0:4a46db9b1f3e | 69 | break; |
gcarmonar | 1:1bea5dcd4d6f | 70 | case 'W': |
gcarmonar | 1:1bea5dcd4d6f | 71 | case 'w': |
gcarmonar | 0:4a46db9b1f3e | 72 | redLed(1); |
gcarmonar | 0:4a46db9b1f3e | 73 | break; |
gcarmonar | 0:4a46db9b1f3e | 74 | case 'H': |
gcarmonar | 0:4a46db9b1f3e | 75 | case 'h': |
gcarmonar | 0:4a46db9b1f3e | 76 | redLed(0); |
gcarmonar | 0:4a46db9b1f3e | 77 | break; |
gcarmonar | 0:4a46db9b1f3e | 78 | } |
gcarmonar | 0:4a46db9b1f3e | 79 | } |
gcarmonar | 0:4a46db9b1f3e | 80 | |
gcarmonar | 0:4a46db9b1f3e | 81 | void setSpeed(int left, int right){ |
gcarmonar | 1:1bea5dcd4d6f | 82 | float sLeft=0, sRight=0; |
gcarmonar | 0:4a46db9b1f3e | 83 | sLeft = (float)(left + 100)/200; |
gcarmonar | 1:1bea5dcd4d6f | 84 | sRight = (float)(right + 100)/200; |
gcarmonar | 0:4a46db9b1f3e | 85 | SLF = sLeft; |
gcarmonar | 0:4a46db9b1f3e | 86 | SLB = sLeft; |
gcarmonar | 0:4a46db9b1f3e | 87 | SRF = sRight; |
gcarmonar | 0:4a46db9b1f3e | 88 | SRB = sRight; |
gcarmonar | 0:4a46db9b1f3e | 89 | } |
gcarmonar | 0:4a46db9b1f3e | 90 | |
gcarmonar | 0:4a46db9b1f3e | 91 | void moveServo(int increment){ |
gcarmonar | 2:aae3b2c0881c | 92 | float temp = 0.0; |
gcarmonar | 2:aae3b2c0881c | 93 | temp = (float)increment / 100.0; |
gcarmonar | 2:aae3b2c0881c | 94 | if (temp < 0 && SARM >= abs(temp)){ |
gcarmonar | 2:aae3b2c0881c | 95 | SARM = SARM + temp; |
gcarmonar | 2:aae3b2c0881c | 96 | }else if (temp > 0 && SARM <= 1 - abs(temp)){ |
gcarmonar | 2:aae3b2c0881c | 97 | SARM = SARM + temp; |
gcarmonar | 0:4a46db9b1f3e | 98 | } |
gcarmonar | 0:4a46db9b1f3e | 99 | } |
gcarmonar | 0:4a46db9b1f3e | 100 | |
gcarmonar | 0:4a46db9b1f3e | 101 | void redLed(int status){ |
gcarmonar | 0:4a46db9b1f3e | 102 | myled = status; |
gcarmonar | 0:4a46db9b1f3e | 103 | } |