Vanesa Lara Cruz / Mbed 2 deprecated serial-protocol-V2

Dependencies:   mbed

Fork of 02_LAB_serial_protocol by ferney alberto beltran molina

Committer:
fabeltranm
Date:
Thu Oct 12 01:13:42 2017 +0000
Revision:
14:124051c4524a
Parent:
13:4226825e2060
Child:
15:92cfae44483c
add void put_sstime(uint8_t vtime)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabeltranm 10:d2bf51fdc68a 1
fabeltranm 10:d2bf51fdc68a 2 #include "draw.h"
fabeltranm 10:d2bf51fdc68a 3 #include "mbed.h"
fabeltranm 14:124051c4524a 4 #include "math.h"
fabeltranm 10:d2bf51fdc68a 5
fabeltranm 10:d2bf51fdc68a 6 DigitalOut led(LED1);
fabeltranm 10:d2bf51fdc68a 7
fabeltranm 10:d2bf51fdc68a 8 PwmOut myServoX(PB_3);
fabeltranm 10:d2bf51fdc68a 9 PwmOut myServoY(PB_4);
fabeltranm 10:d2bf51fdc68a 10 PwmOut myServoZ(PB_5);
fabeltranm 10:d2bf51fdc68a 11
fabeltranm 14:124051c4524a 12 uint8_t posx_old=0; // posición anterior del eje X
fabeltranm 14:124051c4524a 13 uint8_t posy_old=0; // posición anterior del eje Y
fabeltranm 14:124051c4524a 14 uint8_t ss_time=100; // tiempo de espera para moverse 1 mm en microsegundos
fabeltranm 10:d2bf51fdc68a 15
fabeltranm 14:124051c4524a 16 void put_sstime(uint8_t vtime){
fabeltranm 14:124051c4524a 17 ss_time=vtime;
fabeltranm 14:124051c4524a 18
fabeltranm 14:124051c4524a 19 }
fabeltranm 10:d2bf51fdc68a 20 void led_on(uint16_t ts, uint16_t tms )
fabeltranm 10:d2bf51fdc68a 21 {
fabeltranm 10:d2bf51fdc68a 22
fabeltranm 10:d2bf51fdc68a 23 led=1;
fabeltranm 10:d2bf51fdc68a 24 wait(ts);wait_ms(tms);
fabeltranm 10:d2bf51fdc68a 25 led=0;
fabeltranm 10:d2bf51fdc68a 26
fabeltranm 10:d2bf51fdc68a 27 }
fabeltranm 10:d2bf51fdc68a 28
fabeltranm 10:d2bf51fdc68a 29 int coord2us(float coord)
fabeltranm 10:d2bf51fdc68a 30 {
fabeltranm 10:d2bf51fdc68a 31 if(0 <= coord <= MAXPOS)
fabeltranm 10:d2bf51fdc68a 32 return int(750+coord*1900/50);// u6
fabeltranm 10:d2bf51fdc68a 33 return 750;
fabeltranm 10:d2bf51fdc68a 34
fabeltranm 10:d2bf51fdc68a 35 }
fabeltranm 10:d2bf51fdc68a 36
fabeltranm 14:124051c4524a 37 void sstime(uint8_t x, uint8_t y)
fabeltranm 14:124051c4524a 38 {
fabeltranm 14:124051c4524a 39 double dx=abs(x-posx_old);
fabeltranm 14:124051c4524a 40 double dy=abs(y-posy_old);
fabeltranm 14:124051c4524a 41 double dist= sqrt(dx*dx+dy*dy);
fabeltranm 14:124051c4524a 42 wait_ms((int)(ss_time*dist));
fabeltranm 14:124051c4524a 43 posx_old =x;
fabeltranm 14:124051c4524a 44 posy_old=y;
fabeltranm 14:124051c4524a 45
fabeltranm 14:124051c4524a 46 }
fabeltranm 14:124051c4524a 47
fabeltranm 10:d2bf51fdc68a 48 void draw(){
fabeltranm 10:d2bf51fdc68a 49 myServoZ.pulsewidth_us(POSDRAW);
fabeltranm 14:124051c4524a 50 wait_ms(ss_time*2);
fabeltranm 10:d2bf51fdc68a 51 }
fabeltranm 10:d2bf51fdc68a 52
fabeltranm 10:d2bf51fdc68a 53 void nodraw(){
fabeltranm 10:d2bf51fdc68a 54 myServoZ.pulsewidth_us(MAXPOS);
fabeltranm 14:124051c4524a 55 wait_ms(ss_time*2);
fabeltranm 10:d2bf51fdc68a 56 }
fabeltranm 10:d2bf51fdc68a 57
fabeltranm 14:124051c4524a 58
fabeltranm 10:d2bf51fdc68a 59 void vertex2d(uint8_t x, uint8_t y){
fabeltranm 10:d2bf51fdc68a 60
fabeltranm 10:d2bf51fdc68a 61 int pulseX = coord2us(x);
fabeltranm 10:d2bf51fdc68a 62 int pulseY = coord2us(y);
fabeltranm 10:d2bf51fdc68a 63
fabeltranm 10:d2bf51fdc68a 64 myServoX.pulsewidth_us(pulseX);
fabeltranm 10:d2bf51fdc68a 65 myServoY.pulsewidth_us(pulseY);
fabeltranm 14:124051c4524a 66
fabeltranm 14:124051c4524a 67 wait_ms(ss_time); //TODO: CALCULAR EL TIEMPO DE DONDE VIENE
fabeltranm 10:d2bf51fdc68a 68
fabeltranm 10:d2bf51fdc68a 69 }
fabeltranm 10:d2bf51fdc68a 70
fabeltranm 10:d2bf51fdc68a 71 void initdraw(float x, float y){
fabeltranm 10:d2bf51fdc68a 72 vertex2d (x,y);
fabeltranm 10:d2bf51fdc68a 73 draw();
fabeltranm 10:d2bf51fdc68a 74 }
fabeltranm 10:d2bf51fdc68a 75
fabeltranm 10:d2bf51fdc68a 76 void home(){
fabeltranm 10:d2bf51fdc68a 77 nodraw();
fabeltranm 10:d2bf51fdc68a 78 vertex2d(0 ,0);
fabeltranm 10:d2bf51fdc68a 79 }
fabeltranm 10:d2bf51fdc68a 80
fabeltranm 10:d2bf51fdc68a 81
fabeltranm 10:d2bf51fdc68a 82
fabeltranm 10:d2bf51fdc68a 83 void line(float xi, float yi, float xf, float yf)
fabeltranm 10:d2bf51fdc68a 84 {
fabeltranm 10:d2bf51fdc68a 85 float xp; float yp;
fabeltranm 10:d2bf51fdc68a 86 float m= (yf-yi)/(xf-xi);
fabeltranm 10:d2bf51fdc68a 87 float b=yf-m*xf;
fabeltranm 11:8055e81e45d1 88
fabeltranm 10:d2bf51fdc68a 89 initdraw(xi,yi);
fabeltranm 10:d2bf51fdc68a 90 for (xp =xi;xp<=xf;xp+=RSTEP)
fabeltranm 10:d2bf51fdc68a 91 {
fabeltranm 10:d2bf51fdc68a 92 yp =m*xp+b;
fabeltranm 10:d2bf51fdc68a 93 vertex2d(xp,yp);
fabeltranm 10:d2bf51fdc68a 94 }
fabeltranm 10:d2bf51fdc68a 95 nodraw();
fabeltranm 10:d2bf51fdc68a 96
fabeltranm 10:d2bf51fdc68a 97 }
fabeltranm 10:d2bf51fdc68a 98
fabeltranm 10:d2bf51fdc68a 99
fabeltranm 10:d2bf51fdc68a 100 void rectangle(float x, float y, float width,float height) {
fabeltranm 10:d2bf51fdc68a 101
fabeltranm 10:d2bf51fdc68a 102 initdraw(x,y);
fabeltranm 11:8055e81e45d1 103
fabeltranm 10:d2bf51fdc68a 104 vertex2d(x+width, y);
fabeltranm 10:d2bf51fdc68a 105 vertex2d(x+width, y+height);
fabeltranm 10:d2bf51fdc68a 106 vertex2d(x, y+height);
fabeltranm 10:d2bf51fdc68a 107 vertex2d(x, y);
fabeltranm 11:8055e81e45d1 108
fabeltranm 10:d2bf51fdc68a 109 nodraw();
fabeltranm 10:d2bf51fdc68a 110
fabeltranm 11:8055e81e45d1 111 }
fabeltranm 11:8055e81e45d1 112
fabeltranm 11:8055e81e45d1 113 void circle(float x, float y, float radio)
fabeltranm 11:8055e81e45d1 114 {
fabeltranm 13:4226825e2060 115 initdraw(x+radio,y);
fabeltranm 11:8055e81e45d1 116 // coloque codigo aca
fabeltranm 11:8055e81e45d1 117 nodraw();
fabeltranm 11:8055e81e45d1 118
fabeltranm 10:d2bf51fdc68a 119 }