AVANCE PICCOLO CORTE 1

Dependencies:   mbed

Committer:
Camilokingxd
Date:
Tue Mar 13 04:30:04 2018 +0000
Revision:
0:2032b926fd86
Child:
1:8574f732dba3
ENTREGA AVANZE PICCOLO CORTE 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Camilokingxd 0:2032b926fd86 1 #include "mbed.h"
Camilokingxd 0:2032b926fd86 2 #include "Serial.h" //serial
Camilokingxd 0:2032b926fd86 3 #ifndef SERVO_H
Camilokingxd 0:2032b926fd86 4 #define SERVO_H
Camilokingxd 0:2032b926fd86 5 #define MINPULSE 560
Camilokingxd 0:2032b926fd86 6 #define MAXPULSE 2400
Camilokingxd 0:2032b926fd86 7 #define MAXPOS 50// poscisión max de la coordenasda en mm
Camilokingxd 0:2032b926fd86 8 #define DRAW 50
Camilokingxd 0:2032b926fd86 9 #define NODRAW 0
Camilokingxd 0:2032b926fd86 10 #define CM_EJECUTAR 0Xff
Camilokingxd 0:2032b926fd86 11 #define CM_GUARDAR 0Xfe
Camilokingxd 0:2032b926fd86 12 #define CM_SERVO 0Xfd
Camilokingxd 0:2032b926fd86 13 #define CM_SDRAW 0xfc
Camilokingxd 0:2032b926fd86 14 #define CM_SN0DRAW 0xfb
Camilokingxd 0:2032b926fd86 15 #define CM_STOP 0xfa
Camilokingxd 0:2032b926fd86 16 #define CM_END 0xf0
Camilokingxd 0:2032b926fd86 17
Camilokingxd 0:2032b926fd86 18 class Servo
Camilokingxd 0:2032b926fd86 19 {
Camilokingxd 0:2032b926fd86 20 private:
Camilokingxd 0:2032b926fd86 21 uint8_t x,y,z;
Camilokingxd 0:2032b926fd86 22 int mm2pulse(float vmm);
Camilokingxd 0:2032b926fd86 23 public:
Camilokingxd 0:2032b926fd86 24 Servo();
Camilokingxd 0:2032b926fd86 25 ~Servo();
Camilokingxd 0:2032b926fd86 26 void SetServo(uint8_t,uint8_t);
Camilokingxd 0:2032b926fd86 27 void SetZ(uint8_t);
Camilokingxd 0:2032b926fd86 28 uint8_t GetServoX();
Camilokingxd 0:2032b926fd86 29 uint8_t GetServoY();
Camilokingxd 0:2032b926fd86 30 uint8_t GetServoZ();
Camilokingxd 0:2032b926fd86 31 int CONVERTIDOR(int);
Camilokingxd 0:2032b926fd86 32 };
Camilokingxd 0:2032b926fd86 33
Camilokingxd 0:2032b926fd86 34 #endif
Camilokingxd 0:2032b926fd86 35
Camilokingxd 0:2032b926fd86 36 PwmOut mypwmX(PA_8);
Camilokingxd 0:2032b926fd86 37 PwmOut mypwmY(PB_10);
Camilokingxd 0:2032b926fd86 38 PwmOut mypwmZ(PB_4);
Camilokingxd 0:2032b926fd86 39
Camilokingxd 0:2032b926fd86 40 Servo::Servo()
Camilokingxd 0:2032b926fd86 41 {
Camilokingxd 0:2032b926fd86 42 mypwmX.period_ms(20);
Camilokingxd 0:2032b926fd86 43 mypwmY.period_ms(20);
Camilokingxd 0:2032b926fd86 44 mypwmZ.period_ms(20);
Camilokingxd 0:2032b926fd86 45 mypwmX.pulsewidth_us(MAXPULSE);
Camilokingxd 0:2032b926fd86 46 mypwmY.pulsewidth_us(MAXPULSE);
Camilokingxd 0:2032b926fd86 47 mypwmZ.pulsewidth_us(NODRAW);
Camilokingxd 0:2032b926fd86 48
Camilokingxd 0:2032b926fd86 49 }
Camilokingxd 0:2032b926fd86 50
Camilokingxd 0:2032b926fd86 51 Servo::~Servo()
Camilokingxd 0:2032b926fd86 52 {
Camilokingxd 0:2032b926fd86 53 }
Camilokingxd 0:2032b926fd86 54 int Servo::mm2pulse(float vmm)
Camilokingxd 0:2032b926fd86 55 {
Camilokingxd 0:2032b926fd86 56 if (vmm < MAXPOS)
Camilokingxd 0:2032b926fd86 57 return int (vmm*(MAXPULSE-MINPULSE)/(MAXPOS)) +MINPULSE;
Camilokingxd 0:2032b926fd86 58 return MAXPULSE;
Camilokingxd 0:2032b926fd86 59 }
Camilokingxd 0:2032b926fd86 60 void Servo::SetZ(uint8_t _z)
Camilokingxd 0:2032b926fd86 61 {
Camilokingxd 0:2032b926fd86 62 z=_z;
Camilokingxd 0:2032b926fd86 63 int PULSEZ=mm2pulse(CONVERTIDOR(z));
Camilokingxd 0:2032b926fd86 64 mypwmZ.pulsewidth_us(PULSEZ);
Camilokingxd 0:2032b926fd86 65 }
Camilokingxd 0:2032b926fd86 66 void Servo::SetServo(uint8_t _x,uint8_t _y)
Camilokingxd 0:2032b926fd86 67 {
Camilokingxd 0:2032b926fd86 68 x=_x;
Camilokingxd 0:2032b926fd86 69 y=_y;
Camilokingxd 0:2032b926fd86 70 int PULSEX=mm2pulse(CONVERTIDOR(x));
Camilokingxd 0:2032b926fd86 71 int PULSEY=mm2pulse(CONVERTIDOR(y));
Camilokingxd 0:2032b926fd86 72 mypwmX.pulsewidth_us(PULSEX);
Camilokingxd 0:2032b926fd86 73 mypwmY.pulsewidth_us(PULSEY);
Camilokingxd 0:2032b926fd86 74 }
Camilokingxd 0:2032b926fd86 75 uint8_t Servo::GetServoX()
Camilokingxd 0:2032b926fd86 76 {
Camilokingxd 0:2032b926fd86 77 return x;
Camilokingxd 0:2032b926fd86 78 }
Camilokingxd 0:2032b926fd86 79 uint8_t Servo::GetServoY()
Camilokingxd 0:2032b926fd86 80 {
Camilokingxd 0:2032b926fd86 81 return y;
Camilokingxd 0:2032b926fd86 82 }
Camilokingxd 0:2032b926fd86 83 uint8_t Servo::GetServoZ()
Camilokingxd 0:2032b926fd86 84 {
Camilokingxd 0:2032b926fd86 85 return z;
Camilokingxd 0:2032b926fd86 86 }
Camilokingxd 0:2032b926fd86 87 int Servo::CONVERTIDOR(int c)
Camilokingxd 0:2032b926fd86 88 {
Camilokingxd 0:2032b926fd86 89 int u=0;
Camilokingxd 0:2032b926fd86 90 u=c/16;
Camilokingxd 0:2032b926fd86 91 return c-6*u;
Camilokingxd 0:2032b926fd86 92 }