el programa permite ingresar la posición en el eje X,Y,Z, haciendo que el Servo MG90S con sus movimientos de 180° trabaje en mm de 0 a 50.

Dependents:   PICCOLO_CNC PICCOLO_CNC1

Committer:
Stevenor1997
Date:
Thu Mar 08 02:44:07 2018 +0000
Revision:
4:4b884116fbe6
Parent:
3:07bcb3c9a8b8
Child:
6:c81ba0f175ac
se agregaron funciones para ejecutar, guardar y convertir el hexadecimal a decimal;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Stevenor1997 2:cc30b42ac66f 1 #include "Servo_X.h"
Stevenor1997 2:cc30b42ac66f 2 #include "mbed.h"
Stevenor1997 3:07bcb3c9a8b8 3 #include "Serial.h" //serial
Stevenor1997 2:cc30b42ac66f 4
Stevenor1997 4:4b884116fbe6 5
Stevenor1997 2:cc30b42ac66f 6 PwmOut mypwmX(PA_8);
Stevenor1997 2:cc30b42ac66f 7 PwmOut mypwmY(PB_10);
Stevenor1997 2:cc30b42ac66f 8 PwmOut mypwmZ(PB_4);
Stevenor1997 4:4b884116fbe6 9
Stevenor1997 2:cc30b42ac66f 10 Servo::Servo()
Stevenor1997 2:cc30b42ac66f 11 {
Stevenor1997 2:cc30b42ac66f 12 mypwmX.period_ms(20);
Stevenor1997 2:cc30b42ac66f 13 mypwmY.period_ms(20);
Stevenor1997 2:cc30b42ac66f 14 mypwmZ.period_ms(20);
Stevenor1997 4:4b884116fbe6 15 mypwmX.pulsewidth_us(MAXPULSE);
Stevenor1997 4:4b884116fbe6 16 mypwmY.pulsewidth_us(MAXPULSE);
Stevenor1997 2:cc30b42ac66f 17 mypwmZ.pulsewidth_us(NODRAW);
Stevenor1997 2:cc30b42ac66f 18
Stevenor1997 2:cc30b42ac66f 19 }
Stevenor1997 4:4b884116fbe6 20
Stevenor1997 3:07bcb3c9a8b8 21 Servo::~Servo()
Stevenor1997 3:07bcb3c9a8b8 22 {
Stevenor1997 2:cc30b42ac66f 23 }
Stevenor1997 4:4b884116fbe6 24 int Servo::mm2pulse(float vmm)
Stevenor1997 2:cc30b42ac66f 25 {
Stevenor1997 2:cc30b42ac66f 26 if (vmm < MAXPOS)
Stevenor1997 4:4b884116fbe6 27 return int (vmm*(MAXPULSE-MINPULSE)/(MAXPOS)) +MINPULSE;
Stevenor1997 4:4b884116fbe6 28 return MAXPULSE;
Stevenor1997 2:cc30b42ac66f 29 }
Stevenor1997 4:4b884116fbe6 30 void Servo::SetZ(uint8_t _z)
Stevenor1997 2:cc30b42ac66f 31 {
Stevenor1997 2:cc30b42ac66f 32 z=_z;
Stevenor1997 4:4b884116fbe6 33 int PULSEZ=mm2pulse(CONVERTIDOR(z));
Stevenor1997 4:4b884116fbe6 34 mypwmZ.pulsewidth_us(PULSEZ);
Stevenor1997 2:cc30b42ac66f 35 }
Stevenor1997 4:4b884116fbe6 36 void Servo::SetServo(uint8_t _x,uint8_t _y)
Stevenor1997 2:cc30b42ac66f 37 {
Stevenor1997 2:cc30b42ac66f 38 x=_x;
Stevenor1997 2:cc30b42ac66f 39 y=_y;
Stevenor1997 4:4b884116fbe6 40 int PULSEX=mm2pulse(CONVERTIDOR(x));
Stevenor1997 4:4b884116fbe6 41 int PULSEY=mm2pulse(CONVERTIDOR(y));
Stevenor1997 4:4b884116fbe6 42 mypwmX.pulsewidth_us(PULSEX);
Stevenor1997 4:4b884116fbe6 43 mypwmY.pulsewidth_us(PULSEY);
Stevenor1997 2:cc30b42ac66f 44 }
Stevenor1997 4:4b884116fbe6 45 uint8_t Servo::GetServoX()
Stevenor1997 2:cc30b42ac66f 46 {
Stevenor1997 2:cc30b42ac66f 47 return x;
Stevenor1997 2:cc30b42ac66f 48 }
Stevenor1997 4:4b884116fbe6 49 uint8_t Servo::GetServoY()
Stevenor1997 2:cc30b42ac66f 50 {
Stevenor1997 2:cc30b42ac66f 51 return y;
Stevenor1997 2:cc30b42ac66f 52 }
Stevenor1997 4:4b884116fbe6 53 uint8_t Servo::GetServoZ()
Stevenor1997 2:cc30b42ac66f 54 {
Stevenor1997 2:cc30b42ac66f 55 return z;
Stevenor1997 2:cc30b42ac66f 56 }
Stevenor1997 4:4b884116fbe6 57 int Servo::CONVERTIDOR(int c)
Stevenor1997 4:4b884116fbe6 58 {
Stevenor1997 4:4b884116fbe6 59 int u=0;
Stevenor1997 4:4b884116fbe6 60 u=c/16;
Stevenor1997 4:4b884116fbe6 61 return c-6*u;
Stevenor1997 4:4b884116fbe6 62 }