Rousseaux Jean-Claude / Mbed 2 deprecated TestServo

Dependencies:   mbed

Committer:
jcrx
Date:
Mon Oct 18 13:17:22 2010 +0000
Revision:
0:39cd1e782d1e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jcrx 0:39cd1e782d1e 1 /* just a test for "mbed R/C Servo Library"
jcrx 0:39cd1e782d1e 2 * send from PC to mbed a string like ":XXYY"<RC>
jcrx 0:39cd1e782d1e 3 * where XX is the hexa value [00..FF ] (0..255) of Servo1
jcrx 0:39cd1e782d1e 4 * and YY is the hexa value [00..FF ] (0..255) of Servo2
jcrx 0:39cd1e782d1e 5 * also "V"<RC> gives the version.
jcrx 0:39cd1e782d1e 6 */
jcrx 0:39cd1e782d1e 7
jcrx 0:39cd1e782d1e 8 #include "mbed.h"
jcrx 0:39cd1e782d1e 9 #include "Servo.h"
jcrx 0:39cd1e782d1e 10
jcrx 0:39cd1e782d1e 11 PwmOut led_1(LED1);
jcrx 0:39cd1e782d1e 12 PwmOut led_2(LED2);
jcrx 0:39cd1e782d1e 13
jcrx 0:39cd1e782d1e 14 Servo servo_1(p21);
jcrx 0:39cd1e782d1e 15 Servo servo_2(p22);
jcrx 0:39cd1e782d1e 16
jcrx 0:39cd1e782d1e 17 Serial rs_pc(USBTX, USBRX); // virtual com (tx, rx)
jcrx 0:39cd1e782d1e 18
jcrx 0:39cd1e782d1e 19 // convert 2 ascii chars hex format ("00".."FF") -> 1 unsigned char (0..255)
jcrx 0:39cd1e782d1e 20 unsigned char hex_bin (unsigned char *ptr )
jcrx 0:39cd1e782d1e 21 {
jcrx 0:39cd1e782d1e 22 unsigned char temp;
jcrx 0:39cd1e782d1e 23
jcrx 0:39cd1e782d1e 24 if (*ptr>='0' && *ptr<='9') temp = *ptr & 0x0F;
jcrx 0:39cd1e782d1e 25 else temp = (*ptr & 0x0F) + 9;
jcrx 0:39cd1e782d1e 26 temp <<= 4;
jcrx 0:39cd1e782d1e 27 if (*(ptr+1)>='0' && *(ptr+1)<='9') temp |= *(ptr+1) & 0x0F;
jcrx 0:39cd1e782d1e 28 else temp |= (*(ptr+1) & 0x0F) + 9;
jcrx 0:39cd1e782d1e 29 return temp;
jcrx 0:39cd1e782d1e 30 }
jcrx 0:39cd1e782d1e 31
jcrx 0:39cd1e782d1e 32 int main() {
jcrx 0:39cd1e782d1e 33 unsigned char i=0;
jcrx 0:39cd1e782d1e 34 float p;
jcrx 0:39cd1e782d1e 35 unsigned char c;
jcrx 0:39cd1e782d1e 36 unsigned char cmd[6];
jcrx 0:39cd1e782d1e 37 while(1) {
jcrx 0:39cd1e782d1e 38 if(rs_pc.readable()) { // char on rs_pc
jcrx 0:39cd1e782d1e 39 c = rs_pc.getc();
jcrx 0:39cd1e782d1e 40 if (c==13){ // end of tram
jcrx 0:39cd1e782d1e 41 if (cmd[0]== ':'){ // cmd servos
jcrx 0:39cd1e782d1e 42 rs_pc.putc(13); // ok
jcrx 0:39cd1e782d1e 43 // servo 1
jcrx 0:39cd1e782d1e 44 p = hex_bin(&cmd[1])/255.0; // 0.00 (min) -> 1.00 (max)
jcrx 0:39cd1e782d1e 45 servo_1 = p;
jcrx 0:39cd1e782d1e 46 led_1 = p; // just for eyes
jcrx 0:39cd1e782d1e 47 // servo 2
jcrx 0:39cd1e782d1e 48 p = hex_bin(&cmd[3])/255.0; // 0.00 (min) -> 1.00 (max)
jcrx 0:39cd1e782d1e 49 servo_2 = p;
jcrx 0:39cd1e782d1e 50 led_2 = p;
jcrx 0:39cd1e782d1e 51 }
jcrx 0:39cd1e782d1e 52 if (cmd[0]== 'V'){ // version
jcrx 0:39cd1e782d1e 53 rs_pc.printf("Servos test V1.01.a\r");
jcrx 0:39cd1e782d1e 54 }
jcrx 0:39cd1e782d1e 55 i=0;
jcrx 0:39cd1e782d1e 56 }else{
jcrx 0:39cd1e782d1e 57 if (c==':') i=0; // start of tram
jcrx 0:39cd1e782d1e 58 cmd[i++]=c;
jcrx 0:39cd1e782d1e 59 if (i>5){
jcrx 0:39cd1e782d1e 60 rs_pc.printf("Wrong command\r");
jcrx 0:39cd1e782d1e 61 i=0;
jcrx 0:39cd1e782d1e 62 }
jcrx 0:39cd1e782d1e 63 }
jcrx 0:39cd1e782d1e 64 }
jcrx 0:39cd1e782d1e 65 }
jcrx 0:39cd1e782d1e 66 }