ferney alberto beltran molina
/
00_LAB_COMMAND_SERVO
mover servomotore por telecomandos
Diff: main.cpp
- Revision:
- 6:24f37d9e0c57
- Parent:
- 5:115f329c72ab
--- a/main.cpp Mon Feb 25 12:31:53 2019 +0000 +++ b/main.cpp Mon Feb 25 13:38:05 2019 +0000 @@ -8,7 +8,7 @@ | INITCMD | N_motor | N_grados | | 0xff | 0x01- 0x04 | 0x00 - 0xb4 | -para enviar los comandos usar el programa Coolterm +para enviar los comandos usar el programa Coolterm http://freeware.the-meiers.org/ # para el servo motor se debe modificar el ciclo util del PWM SEGUN: # ________ ________ @@ -26,7 +26,7 @@ Serial command(USBTX, USBRX); PwmOut myservo1(PB_4); -/*INGRESE L A CONFIGURACION DE LOS MOTORES*/ +/*INGRESE LA CONFIGURACION DE LOS MOTORES*/ #define INITCMD 0xFF #define DEGREES_MAX 180 @@ -42,7 +42,7 @@ void setup_servo(); void mover_servo(uint8_t motor, uint8_t gradss); -uint32_t degrees2usec(uint8_t grados){ +uint32_t degrees2usec(uint8_t grados); void leer_datos(); @@ -67,7 +67,7 @@ void setup_servo(){ myservo1.period_ms(20); - myservo1.pulsewidth_us(1000); + myservo1.pulsewidth_us(2000); } void leer_datos(){ @@ -78,7 +78,16 @@ } +uint32_t degrees2usec(uint8_t grados){ +// Retorna el valor en microsegundos, donde +// y − y1 = m(x − x1 ) +// y= b + mx + if(grados <= DEGREES_MAX) + return int(750+grados*1900/180);// u6 + return 750; + +} void mover_servo(uint8_t motor, uint8_t grados){ @@ -88,17 +97,10 @@ tip: deben pasar grados a microsegundo */ -// dpulse=degrees2usec(grados); -// myservo1.pulsewidth_us(dpulse); + dpulse=degrees2usec(grados); + if (motor==1) + myservo1.pulsewidth_us(dpulse); } -uint32_t degrees2usec(uint8_t grados){ -// Retorno el valor en usegundos, donde -// y − y1 = m(x − x1 ) - if(grados <= DEGREES_MAX) - return int(750+grados*1900/180);// u6 - return 750; - -} \ No newline at end of file