VEX robotics 393 motor control test

Dependencies:   Servo mbed

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?

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