David Beargie
/
vex_motor_USBcontrol
VEX robotics 393 motor control test
main.cpp@2:a42e1062af7b, 2014-02-01 (annotated)
- Committer:
- dbearg
- Date:
- Sat Feb 01 16:54:56 2014 +0000
- Revision:
- 2:a42e1062af7b
- Parent:
- 1:c41ae3b710a2
added title text
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dbearg | 2:a42e1062af7b | 1 | //================================== |
dbearg | 2:a42e1062af7b | 2 | // |
dbearg | 2:a42e1062af7b | 3 | // VEX MOTOR CONTROL EXAMPLE PROGRAM |
dbearg | 2:a42e1062af7b | 4 | // ---------------------------- |
dbearg | 2:a42e1062af7b | 5 | // Controls a PWM VEX motor speed |
dbearg | 2:a42e1062af7b | 6 | // with the "u" and "d" keys |
dbearg | 2:a42e1062af7b | 7 | // |
dbearg | 2:a42e1062af7b | 8 | //================================== |
dbearg | 2:a42e1062af7b | 9 | |
dbearg | 0:1719fc9a160e | 10 | //================================== |
dbearg | 0:1719fc9a160e | 11 | // Add any libraries that you use: |
dbearg | 0:1719fc9a160e | 12 | //================================== |
dbearg | 2:a42e1062af7b | 13 | |
dbearg | 0:1719fc9a160e | 14 | #include "mbed.h" |
dbearg | 0:1719fc9a160e | 15 | #include "Servo.h" |
dbearg | 0:1719fc9a160e | 16 | |
dbearg | 0:1719fc9a160e | 17 | |
dbearg | 0:1719fc9a160e | 18 | //================================== |
dbearg | 0:1719fc9a160e | 19 | // Add variables: |
dbearg | 0:1719fc9a160e | 20 | //================================== |
dbearg | 0:1719fc9a160e | 21 | |
dbearg | 1:c41ae3b710a2 | 22 | |
dbearg | 2:a42e1062af7b | 23 | //add a servo to PWM output on pin 21 |
dbearg | 2:a42e1062af7b | 24 | |
dbearg | 0:1719fc9a160e | 25 | Servo myservo(p21); |
dbearg | 0:1719fc9a160e | 26 | |
dbearg | 1:c41ae3b710a2 | 27 | //add a variable for motor speed |
dbearg | 1:c41ae3b710a2 | 28 | //0.0 is full counter-clockwise |
dbearg | 1:c41ae3b710a2 | 29 | //0.5 is zero rpm |
dbearg | 1:c41ae3b710a2 | 30 | //1.0 is full clockwise |
dbearg | 0:1719fc9a160e | 31 | |
dbearg | 1:c41ae3b710a2 | 32 | float speed = 0.5; |
dbearg | 1:c41ae3b710a2 | 33 | |
dbearg | 1:c41ae3b710a2 | 34 | //add variables for the 4 onboard LEDS |
dbearg | 2:a42e1062af7b | 35 | PwmOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); |
dbearg | 0:1719fc9a160e | 36 | |
dbearg | 1:c41ae3b710a2 | 37 | //PC USB link |
dbearg | 1:c41ae3b710a2 | 38 | Serial pc(USBTX, USBRX); |
dbearg | 0:1719fc9a160e | 39 | |
dbearg | 0:1719fc9a160e | 40 | |
dbearg | 0:1719fc9a160e | 41 | //========================================================== |
dbearg | 0:1719fc9a160e | 42 | // MAIN FUNCTION |
dbearg | 0:1719fc9a160e | 43 | // waits for button press, then uses the button code above |
dbearg | 0:1719fc9a160e | 44 | //========================================================== |
dbearg | 1:c41ae3b710a2 | 45 | |
dbearg | 0:1719fc9a160e | 46 | int main() { |
dbearg | 1:c41ae3b710a2 | 47 | |
dbearg | 1:c41ae3b710a2 | 48 | //prompt the PC user for differential speed value |
dbearg | 1:c41ae3b710a2 | 49 | |
dbearg | 2:a42e1062af7b | 50 | pc.printf("Control of servo speed by host terminal\n\r"); |
dbearg | 2:a42e1062af7b | 51 | pc.printf("Press 'u' = brighter, 'd' = dimmer\n\r"); |
dbearg | 1:c41ae3b710a2 | 52 | |
dbearg | 1:c41ae3b710a2 | 53 | while(1) { |
dbearg | 1:c41ae3b710a2 | 54 | |
dbearg | 1:c41ae3b710a2 | 55 | //get the value for speed |
dbearg | 1:c41ae3b710a2 | 56 | |
dbearg | 1:c41ae3b710a2 | 57 | char c = pc.getc(); |
dbearg | 1:c41ae3b710a2 | 58 | wait(0.001); |
dbearg | 1:c41ae3b710a2 | 59 | |
dbearg | 1:c41ae3b710a2 | 60 | //up logic |
dbearg | 1:c41ae3b710a2 | 61 | |
dbearg | 2:a42e1062af7b | 62 | if((c == 'u') && (speed < 0.99)) { |
dbearg | 2:a42e1062af7b | 63 | speed += 0.01; |
dbearg | 1:c41ae3b710a2 | 64 | myservo = speed; |
dbearg | 2:a42e1062af7b | 65 | led1 = speed; |
dbearg | 1:c41ae3b710a2 | 66 | } |
dbearg | 1:c41ae3b710a2 | 67 | |
dbearg | 1:c41ae3b710a2 | 68 | //down logic |
dbearg | 0:1719fc9a160e | 69 | |
dbearg | 1:c41ae3b710a2 | 70 | if((c == 'd') && (speed > 0.0)) { |
dbearg | 2:a42e1062af7b | 71 | speed -= 0.01; |
dbearg | 1:c41ae3b710a2 | 72 | myservo = speed; |
dbearg | 2:a42e1062af7b | 73 | led1 = speed; |
dbearg | 1:c41ae3b710a2 | 74 | } |
dbearg | 1:c41ae3b710a2 | 75 | |
dbearg | 1:c41ae3b710a2 | 76 | //display the speed to the PC |
dbearg | 2:a42e1062af7b | 77 | |
dbearg | 1:c41ae3b710a2 | 78 | pc.printf("%c %1.3f \n \r",c,speed); |
dbearg | 0:1719fc9a160e | 79 | |
dbearg | 1:c41ae3b710a2 | 80 | } |
dbearg | 1:c41ae3b710a2 | 81 | |
dbearg | 1:c41ae3b710a2 | 82 | //end while loop |
dbearg | 0:1719fc9a160e | 83 | |
dbearg | 0:1719fc9a160e | 84 | } |
dbearg | 1:c41ae3b710a2 | 85 | |
dbearg | 1:c41ae3b710a2 | 86 | //end of main function |