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
Servo_X.cpp@4:4b884116fbe6, 2018-03-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |