AVANCE PICCOLO CORTE 1

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }