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 19 23:42:47 2017 +0000
Revision:
18:08bd68471535
Parent:
17:a0b884f78802
Child:
20:b7f2e428b24c
line okey all

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 15:92cfae44483c 81 void line_n(float xi, float yi, float xf, float yf)
fabeltranm 15:92cfae44483c 82 {
fabeltranm 17:a0b884f78802 83 float xp; float yp;
fabeltranm 17:a0b884f78802 84 float m; float b;
fabeltranm 18:08bd68471535 85 int st=RSTEP ;
fabeltranm 17:a0b884f78802 86 int run=1;
fabeltranm 17:a0b884f78802 87 m=(float)(yf-yi)/(xf-xi);
fabeltranm 17:a0b884f78802 88
fabeltranm 17:a0b884f78802 89 if (abs(m)<=1){
fabeltranm 17:a0b884f78802 90 b=(float)yf-(float)(m*xf);
fabeltranm 17:a0b884f78802 91 // command.printf(" m = %f b= %f \n", m,b);
fabeltranm 17:a0b884f78802 92 xp =xi;
fabeltranm 17:a0b884f78802 93 while(run)
fabeltranm 10:d2bf51fdc68a 94 {
fabeltranm 17:a0b884f78802 95 yp =m*xp+b;
fabeltranm 17:a0b884f78802 96 vertex2d(xp ,yp);
fabeltranm 17:a0b884f78802 97 //print_bin2hex(xp); print_bin2hex(yp);
fabeltranm 17:a0b884f78802 98 //command.printf(" \n");
fabeltranm 17:a0b884f78802 99 if (xf>xi){
fabeltranm 17:a0b884f78802 100 xp=xp+st;
fabeltranm 17:a0b884f78802 101 if (xp>xf)run=0;
fabeltranm 17:a0b884f78802 102 }else {
fabeltranm 17:a0b884f78802 103 xp-=st;
fabeltranm 17:a0b884f78802 104 if (xp<xf)run=0;
fabeltranm 17:a0b884f78802 105 }
fabeltranm 17:a0b884f78802 106
fabeltranm 10:d2bf51fdc68a 107 }
fabeltranm 17:a0b884f78802 108 }else{
fabeltranm 17:a0b884f78802 109 m=(float)(xf-xi)/(yf-yi);
fabeltranm 17:a0b884f78802 110 b=(float)xf-(float)(m*yf);
fabeltranm 17:a0b884f78802 111 // command.printf(" m = %f b= %f \n", m,b);
fabeltranm 17:a0b884f78802 112 yp =yi;
fabeltranm 17:a0b884f78802 113 while(run)
fabeltranm 17:a0b884f78802 114 {
fabeltranm 17:a0b884f78802 115 xp =m*yp+b;
fabeltranm 17:a0b884f78802 116 vertex2d(xp ,yp);
fabeltranm 17:a0b884f78802 117 // print_bin2hex(xp); print_bin2hex(yp);
fabeltranm 17:a0b884f78802 118 // command.printf(" \n");
fabeltranm 17:a0b884f78802 119 if (yf>yi){
fabeltranm 17:a0b884f78802 120 yp=yp+st;
fabeltranm 17:a0b884f78802 121 if (yp>yf)run=0;
fabeltranm 17:a0b884f78802 122 }else {
fabeltranm 17:a0b884f78802 123 yp-=st;
fabeltranm 17:a0b884f78802 124 if (yp<yf)run=0;
fabeltranm 17:a0b884f78802 125 }
fabeltranm 17:a0b884f78802 126
fabeltranm 17:a0b884f78802 127 }
fabeltranm 17:a0b884f78802 128 }
fabeltranm 15:92cfae44483c 129 }
fabeltranm 15:92cfae44483c 130 void line(float xi, float yi, float xf, float yf)
fabeltranm 15:92cfae44483c 131 {
fabeltranm 15:92cfae44483c 132 initdraw(xi,yi);
fabeltranm 15:92cfae44483c 133 line_n(xi, yi, xf, yf);
fabeltranm 10:d2bf51fdc68a 134 nodraw();
fabeltranm 10:d2bf51fdc68a 135
fabeltranm 10:d2bf51fdc68a 136 }
fabeltranm 10:d2bf51fdc68a 137
fabeltranm 10:d2bf51fdc68a 138
fabeltranm 10:d2bf51fdc68a 139 void rectangle(float x, float y, float width,float height) {
fabeltranm 10:d2bf51fdc68a 140
fabeltranm 10:d2bf51fdc68a 141 initdraw(x,y);
fabeltranm 15:92cfae44483c 142
fabeltranm 15:92cfae44483c 143 line_n(x,y,x+width,y);
fabeltranm 15:92cfae44483c 144 line_n(x+width,y,x+width,y+height);
fabeltranm 15:92cfae44483c 145 line_n(x+width,y+height,x,y+height);
fabeltranm 15:92cfae44483c 146 line_n(x,y+height,x,y);
fabeltranm 11:8055e81e45d1 147
fabeltranm 15:92cfae44483c 148
fabeltranm 10:d2bf51fdc68a 149 nodraw();
fabeltranm 10:d2bf51fdc68a 150
fabeltranm 11:8055e81e45d1 151 }
fabeltranm 11:8055e81e45d1 152
fabeltranm 11:8055e81e45d1 153 void circle(float x, float y, float radio)
fabeltranm 11:8055e81e45d1 154 {
fabeltranm 13:4226825e2060 155 initdraw(x+radio,y);
fabeltranm 17:a0b884f78802 156 // coloque codigo
fabeltranm 11:8055e81e45d1 157 nodraw();
fabeltranm 11:8055e81e45d1 158
fabeltranm 10:d2bf51fdc68a 159 }