Camilo Ramirez
/
ENTREGA1
AVANCE PICCOLO CORTE 1
servo.h@1:8574f732dba3, 2018-03-13 (annotated)
- Committer:
- Camilokingxd
- Date:
- Tue Mar 13 14:43:08 2018 +0000
- Revision:
- 1:8574f732dba3
- Parent:
- 0:2032b926fd86
MODIFICACION 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Camilokingxd | 0:2032b926fd86 | 1 | #include "mbed.h" |
Camilokingxd | 1:8574f732dba3 | 2 | #include "Serial.h" //BIBLIOTECA COMUNICACION SERIAL |
Camilokingxd | 1:8574f732dba3 | 3 | #define SS_TIME 100 // NO ME ACUERDOOOOO - EN MICROSEGUNDO |
Camilokingxd | 0:2032b926fd86 | 4 | #ifndef SERVO_H |
Camilokingxd | 0:2032b926fd86 | 5 | #define SERVO_H |
Camilokingxd | 0:2032b926fd86 | 6 | #define MINPULSE 560 |
Camilokingxd | 0:2032b926fd86 | 7 | #define MAXPULSE 2400 |
Camilokingxd | 1:8574f732dba3 | 8 | #define MAXPOS 50// MAXIMA POSICION EN COORDENADAS EN mm |
Camilokingxd | 0:2032b926fd86 | 9 | #define DRAW 50 |
Camilokingxd | 0:2032b926fd86 | 10 | #define NODRAW 0 |
Camilokingxd | 1:8574f732dba3 | 11 | #define OP_EJECUTAR 0Xff |
Camilokingxd | 1:8574f732dba3 | 12 | #define OP_GUARDAR 0Xfe |
Camilokingxd | 1:8574f732dba3 | 13 | #define OP_SERVO 0Xfd |
Camilokingxd | 1:8574f732dba3 | 14 | #define OP_SDRAW 0xfc |
Camilokingxd | 1:8574f732dba3 | 15 | #define OP_SNODRAW 0xfb |
Camilokingxd | 1:8574f732dba3 | 16 | #define OP_STOP 0xfa |
Camilokingxd | 1:8574f732dba3 | 17 | #define OP_END 0xf0 |
Camilokingxd | 1:8574f732dba3 | 18 | #define MEM_SIZE 5000 //TAMAÑO DEL ARREGLO |
Camilokingxd | 1:8574f732dba3 | 19 | #define MEM_TYPE uint32_t //TAMAÑO DE CADA CASILLA |
Camilokingxd | 0:2032b926fd86 | 20 | |
Camilokingxd | 0:2032b926fd86 | 21 | class Servo |
Camilokingxd | 0:2032b926fd86 | 22 | { |
Camilokingxd | 0:2032b926fd86 | 23 | private: |
Camilokingxd | 1:8574f732dba3 | 24 | uint8_t x,y,z; //UNSIGNED SHORT INT |
Camilokingxd | 0:2032b926fd86 | 25 | int mm2pulse(float vmm); |
Camilokingxd | 0:2032b926fd86 | 26 | public: |
Camilokingxd | 0:2032b926fd86 | 27 | Servo(); |
Camilokingxd | 0:2032b926fd86 | 28 | ~Servo(); |
Camilokingxd | 0:2032b926fd86 | 29 | void SetServo(uint8_t,uint8_t); |
Camilokingxd | 0:2032b926fd86 | 30 | void SetZ(uint8_t); |
Camilokingxd | 0:2032b926fd86 | 31 | uint8_t GetServoX(); |
Camilokingxd | 0:2032b926fd86 | 32 | uint8_t GetServoY(); |
Camilokingxd | 0:2032b926fd86 | 33 | uint8_t GetServoZ(); |
Camilokingxd | 0:2032b926fd86 | 34 | int CONVERTIDOR(int); |
Camilokingxd | 0:2032b926fd86 | 35 | }; |
Camilokingxd | 0:2032b926fd86 | 36 | |
Camilokingxd | 0:2032b926fd86 | 37 | #endif |
Camilokingxd | 0:2032b926fd86 | 38 | |
Camilokingxd | 0:2032b926fd86 | 39 | PwmOut mypwmX(PA_8); |
Camilokingxd | 0:2032b926fd86 | 40 | PwmOut mypwmY(PB_10); |
Camilokingxd | 0:2032b926fd86 | 41 | PwmOut mypwmZ(PB_4); |
Camilokingxd | 0:2032b926fd86 | 42 | |
Camilokingxd | 0:2032b926fd86 | 43 | Servo::Servo() |
Camilokingxd | 0:2032b926fd86 | 44 | { |
Camilokingxd | 0:2032b926fd86 | 45 | mypwmX.period_ms(20); |
Camilokingxd | 0:2032b926fd86 | 46 | mypwmY.period_ms(20); |
Camilokingxd | 0:2032b926fd86 | 47 | mypwmZ.period_ms(20); |
Camilokingxd | 0:2032b926fd86 | 48 | mypwmX.pulsewidth_us(MAXPULSE); |
Camilokingxd | 0:2032b926fd86 | 49 | mypwmY.pulsewidth_us(MAXPULSE); |
Camilokingxd | 0:2032b926fd86 | 50 | mypwmZ.pulsewidth_us(NODRAW); |
Camilokingxd | 0:2032b926fd86 | 51 | |
Camilokingxd | 0:2032b926fd86 | 52 | } |
Camilokingxd | 0:2032b926fd86 | 53 | |
Camilokingxd | 0:2032b926fd86 | 54 | Servo::~Servo() |
Camilokingxd | 0:2032b926fd86 | 55 | { |
Camilokingxd | 0:2032b926fd86 | 56 | } |
Camilokingxd | 0:2032b926fd86 | 57 | int Servo::mm2pulse(float vmm) |
Camilokingxd | 0:2032b926fd86 | 58 | { |
Camilokingxd | 0:2032b926fd86 | 59 | if (vmm < MAXPOS) |
Camilokingxd | 0:2032b926fd86 | 60 | return int (vmm*(MAXPULSE-MINPULSE)/(MAXPOS)) +MINPULSE; |
Camilokingxd | 0:2032b926fd86 | 61 | return MAXPULSE; |
Camilokingxd | 0:2032b926fd86 | 62 | } |
Camilokingxd | 0:2032b926fd86 | 63 | void Servo::SetZ(uint8_t _z) |
Camilokingxd | 0:2032b926fd86 | 64 | { |
Camilokingxd | 0:2032b926fd86 | 65 | z=_z; |
Camilokingxd | 0:2032b926fd86 | 66 | int PULSEZ=mm2pulse(CONVERTIDOR(z)); |
Camilokingxd | 0:2032b926fd86 | 67 | mypwmZ.pulsewidth_us(PULSEZ); |
Camilokingxd | 0:2032b926fd86 | 68 | } |
Camilokingxd | 0:2032b926fd86 | 69 | void Servo::SetServo(uint8_t _x,uint8_t _y) |
Camilokingxd | 0:2032b926fd86 | 70 | { |
Camilokingxd | 0:2032b926fd86 | 71 | x=_x; |
Camilokingxd | 0:2032b926fd86 | 72 | y=_y; |
Camilokingxd | 0:2032b926fd86 | 73 | int PULSEX=mm2pulse(CONVERTIDOR(x)); |
Camilokingxd | 0:2032b926fd86 | 74 | int PULSEY=mm2pulse(CONVERTIDOR(y)); |
Camilokingxd | 0:2032b926fd86 | 75 | mypwmX.pulsewidth_us(PULSEX); |
Camilokingxd | 0:2032b926fd86 | 76 | mypwmY.pulsewidth_us(PULSEY); |
Camilokingxd | 0:2032b926fd86 | 77 | } |
Camilokingxd | 0:2032b926fd86 | 78 | uint8_t Servo::GetServoX() |
Camilokingxd | 0:2032b926fd86 | 79 | { |
Camilokingxd | 0:2032b926fd86 | 80 | return x; |
Camilokingxd | 0:2032b926fd86 | 81 | } |
Camilokingxd | 0:2032b926fd86 | 82 | uint8_t Servo::GetServoY() |
Camilokingxd | 0:2032b926fd86 | 83 | { |
Camilokingxd | 0:2032b926fd86 | 84 | return y; |
Camilokingxd | 0:2032b926fd86 | 85 | } |
Camilokingxd | 0:2032b926fd86 | 86 | uint8_t Servo::GetServoZ() |
Camilokingxd | 0:2032b926fd86 | 87 | { |
Camilokingxd | 0:2032b926fd86 | 88 | return z; |
Camilokingxd | 0:2032b926fd86 | 89 | } |
Camilokingxd | 0:2032b926fd86 | 90 | int Servo::CONVERTIDOR(int c) |
Camilokingxd | 0:2032b926fd86 | 91 | { |
Camilokingxd | 0:2032b926fd86 | 92 | int u=0; |
Camilokingxd | 0:2032b926fd86 | 93 | u=c/16; |
Camilokingxd | 0:2032b926fd86 | 94 | return c-6*u; |
Camilokingxd | 0:2032b926fd86 | 95 | } |