Andres Guio / Mbed 2 deprecated Proyecto

Dependencies:   mbed

Committer:
DANIELOM1916
Date:
Tue Mar 13 22:47:00 2018 +0000
Revision:
0:cc4ffe9bb764
PICCOLO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DANIELOM1916 0:cc4ffe9bb764 1
DANIELOM1916 0:cc4ffe9bb764 2 #include "draw.h"
DANIELOM1916 0:cc4ffe9bb764 3 #include "mbed.h"
DANIELOM1916 0:cc4ffe9bb764 4 #include "math.h"
DANIELOM1916 0:cc4ffe9bb764 5
DANIELOM1916 0:cc4ffe9bb764 6
DANIELOM1916 0:cc4ffe9bb764 7
DANIELOM1916 0:cc4ffe9bb764 8 PwmOut myServoX(PB_3); // pin de salida del PWM X
DANIELOM1916 0:cc4ffe9bb764 9 PwmOut myServoY(PB_4);
DANIELOM1916 0:cc4ffe9bb764 10 PwmOut myServoZ(PB_5);
DANIELOM1916 0:cc4ffe9bb764 11
DANIELOM1916 0:cc4ffe9bb764 12 uint8_t posx_old=0; // posición anterior del eje X
DANIELOM1916 0:cc4ffe9bb764 13 uint8_t posy_old=0; // posición anterior del eje Y
DANIELOM1916 0:cc4ffe9bb764 14 uint8_t ss_time=100; // tiempo de espera para moverse 1 mm en microsegundos
DANIELOM1916 0:cc4ffe9bb764 15
DANIELOM1916 0:cc4ffe9bb764 16 void put_sstime(uint8_t vtime){ //SI
DANIELOM1916 0:cc4ffe9bb764 17 ss_time=vtime;
DANIELOM1916 0:cc4ffe9bb764 18
DANIELOM1916 0:cc4ffe9bb764 19 }
DANIELOM1916 0:cc4ffe9bb764 20
DANIELOM1916 0:cc4ffe9bb764 21 int coord2us(float coord)
DANIELOM1916 0:cc4ffe9bb764 22 {
DANIELOM1916 0:cc4ffe9bb764 23 if(0 <= coord <= MAXPOS)
DANIELOM1916 0:cc4ffe9bb764 24 return int(560+coord*1700/50);// calculo rango servomotor
DANIELOM1916 0:cc4ffe9bb764 25 return 560;
DANIELOM1916 0:cc4ffe9bb764 26
DANIELOM1916 0:cc4ffe9bb764 27 }
DANIELOM1916 0:cc4ffe9bb764 28
DANIELOM1916 0:cc4ffe9bb764 29 void sstime(uint8_t x, uint8_t y) // calculo para la posicion del piccolo
DANIELOM1916 0:cc4ffe9bb764 30 {
DANIELOM1916 0:cc4ffe9bb764 31 double dx=abs(x-posx_old);
DANIELOM1916 0:cc4ffe9bb764 32 double dy=abs(y-posy_old);
DANIELOM1916 0:cc4ffe9bb764 33 double dist= sqrt(dx*dx+dy*dy);
DANIELOM1916 0:cc4ffe9bb764 34 wait_ms((int)(ss_time*dist));
DANIELOM1916 0:cc4ffe9bb764 35 posx_old =x;
DANIELOM1916 0:cc4ffe9bb764 36 posy_old=y;
DANIELOM1916 0:cc4ffe9bb764 37
DANIELOM1916 0:cc4ffe9bb764 38 }
DANIELOM1916 0:cc4ffe9bb764 39
DANIELOM1916 0:cc4ffe9bb764 40 void draw(){ // posicion para dibujo
DANIELOM1916 0:cc4ffe9bb764 41 myServoZ.pulsewidth_us(POSDRAW);
DANIELOM1916 0:cc4ffe9bb764 42 wait_ms(ss_time*2);
DANIELOM1916 0:cc4ffe9bb764 43 }
DANIELOM1916 0:cc4ffe9bb764 44
DANIELOM1916 0:cc4ffe9bb764 45 void nodraw(){ // posicion eje z arrina
DANIELOM1916 0:cc4ffe9bb764 46 myServoZ.pulsewidth_us(MAXPOS);
DANIELOM1916 0:cc4ffe9bb764 47 wait_ms(ss_time*2);
DANIELOM1916 0:cc4ffe9bb764 48 }
DANIELOM1916 0:cc4ffe9bb764 49
DANIELOM1916 0:cc4ffe9bb764 50
DANIELOM1916 0:cc4ffe9bb764 51 void vertex2d(uint8_t x, uint8_t y){ // subprograma para dibujar
DANIELOM1916 0:cc4ffe9bb764 52
DANIELOM1916 0:cc4ffe9bb764 53 int pulseX = coord2us(x);
DANIELOM1916 0:cc4ffe9bb764 54 int pulseY = coord2us(y);
DANIELOM1916 0:cc4ffe9bb764 55
DANIELOM1916 0:cc4ffe9bb764 56 myServoX.pulsewidth_us(pulseX);
DANIELOM1916 0:cc4ffe9bb764 57 myServoY.pulsewidth_us(pulseY);
DANIELOM1916 0:cc4ffe9bb764 58
DANIELOM1916 0:cc4ffe9bb764 59 sstime(x,y);
DANIELOM1916 0:cc4ffe9bb764 60
DANIELOM1916 0:cc4ffe9bb764 61 }
DANIELOM1916 0:cc4ffe9bb764 62
DANIELOM1916 0:cc4ffe9bb764 63 void initdraw(float x, float y){ //posicion inicial para dibujar
DANIELOM1916 0:cc4ffe9bb764 64 vertex2d (x,y);
DANIELOM1916 0:cc4ffe9bb764 65 draw();
DANIELOM1916 0:cc4ffe9bb764 66 }
DANIELOM1916 0:cc4ffe9bb764 67
DANIELOM1916 0:cc4ffe9bb764 68 void home(){ // posicion en reposo del piccolo
DANIELOM1916 0:cc4ffe9bb764 69 nodraw();
DANIELOM1916 0:cc4ffe9bb764 70 vertex2d(0 ,0);
DANIELOM1916 0:cc4ffe9bb764 71 }
DANIELOM1916 0:cc4ffe9bb764 72
DANIELOM1916 0:cc4ffe9bb764 73
DANIELOM1916 0:cc4ffe9bb764 74
DANIELOM1916 0:cc4ffe9bb764 75 void init_servo() // periodo de lo servos para su funcionamiento
DANIELOM1916 0:cc4ffe9bb764 76 {
DANIELOM1916 0:cc4ffe9bb764 77 myServoX.period_ms(20);
DANIELOM1916 0:cc4ffe9bb764 78 myServoY.period_ms(20);
DANIELOM1916 0:cc4ffe9bb764 79 myServoZ.period_ms(20);
DANIELOM1916 0:cc4ffe9bb764 80
DANIELOM1916 0:cc4ffe9bb764 81
DANIELOM1916 0:cc4ffe9bb764 82 }