1er corte

Dependencies:   mbed

Committer:
jeanmojica05
Date:
Wed Mar 14 04:18:08 2018 +0000
Revision:
0:6b90993ae9ec
Proceso programaci?n piccolo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jeanmojica05 0:6b90993ae9ec 1 #include "mbed.h"
jeanmojica05 0:6b90993ae9ec 2 #include "math.h"
jeanmojica05 0:6b90993ae9ec 3
jeanmojica05 0:6b90993ae9ec 4 #define MEM_SIZE 10
jeanmojica05 0:6b90993ae9ec 5 #define MEM_TYPE uint8_t
jeanmojica05 0:6b90993ae9ec 6 #define MAXPOS 50 // en milimetros
jeanmojica05 0:6b90993ae9ec 7 #define SS_TIME 100 // en microsegundos
jeanmojica05 0:6b90993ae9ec 8 #define POSDRAW 10
jeanmojica05 0:6b90993ae9ec 9 #define CM_EJECUTAR 0xff
jeanmojica05 0:6b90993ae9ec 10 #define CM_GUARDAR 0xfe
jeanmojica05 0:6b90993ae9ec 11 #define CM_VERTEX2D 0xfd
jeanmojica05 0:6b90993ae9ec 12 #define CM_DRAW 0xfc
jeanmojica05 0:6b90993ae9ec 13 #define CM_NODRAW 0xfb
jeanmojica05 0:6b90993ae9ec 14 #define CM_STOP 0xfa
jeanmojica05 0:6b90993ae9ec 15 #define CM_END 0xf0
jeanmojica05 0:6b90993ae9ec 16
jeanmojica05 0:6b90993ae9ec 17
jeanmojica05 0:6b90993ae9ec 18 PwmOut myServoX(PB_3);
jeanmojica05 0:6b90993ae9ec 19 PwmOut myServoY(PB_4);
jeanmojica05 0:6b90993ae9ec 20 PwmOut myServoZ(PB_5);
jeanmojica05 0:6b90993ae9ec 21
jeanmojica05 0:6b90993ae9ec 22 int mem_head = 0;
jeanmojica05 0:6b90993ae9ec 23 int mem_tail = 0;
jeanmojica05 0:6b90993ae9ec 24 uint8_t full = 0;
jeanmojica05 0:6b90993ae9ec 25 uint8_t posx_old=0; // posición anterior del eje X
jeanmojica05 0:6b90993ae9ec 26 uint8_t posy_old=0; // posición anterior del eje Y
jeanmojica05 0:6b90993ae9ec 27 uint8_t ss_time=100; // tiempo de espera para moverse 1 mm en microsegundos
jeanmojica05 0:6b90993ae9ec 28
jeanmojica05 0:6b90993ae9ec 29 MEM_TYPE buffer[MEM_SIZE];
jeanmojica05 0:6b90993ae9ec 30 Serial command(USBTX, USBRX);
jeanmojica05 0:6b90993ae9ec 31
jeanmojica05 0:6b90993ae9ec 32 void put_sstime(uint8_t vtime){
jeanmojica05 0:6b90993ae9ec 33 ss_time=vtime;
jeanmojica05 0:6b90993ae9ec 34
jeanmojica05 0:6b90993ae9ec 35 }
jeanmojica05 0:6b90993ae9ec 36
jeanmojica05 0:6b90993ae9ec 37 int coord2us(float coord)
jeanmojica05 0:6b90993ae9ec 38 {
jeanmojica05 0:6b90993ae9ec 39 if(0 <= coord <= MAXPOS)
jeanmojica05 0:6b90993ae9ec 40 return int(750+coord*1900/50);// u6
jeanmojica05 0:6b90993ae9ec 41 return 750;
jeanmojica05 0:6b90993ae9ec 42
jeanmojica05 0:6b90993ae9ec 43 }
jeanmojica05 0:6b90993ae9ec 44
jeanmojica05 0:6b90993ae9ec 45 void sstime(uint8_t x, uint8_t y)
jeanmojica05 0:6b90993ae9ec 46 {
jeanmojica05 0:6b90993ae9ec 47 double dx=abs(x-posx_old);
jeanmojica05 0:6b90993ae9ec 48 double dy=abs(y-posy_old);
jeanmojica05 0:6b90993ae9ec 49 double dist= sqrt(dx*dx+dy*dy);
jeanmojica05 0:6b90993ae9ec 50 wait_ms((int)(ss_time*dist));
jeanmojica05 0:6b90993ae9ec 51 posx_old =x;
jeanmojica05 0:6b90993ae9ec 52 posy_old=y;
jeanmojica05 0:6b90993ae9ec 53
jeanmojica05 0:6b90993ae9ec 54 }
jeanmojica05 0:6b90993ae9ec 55
jeanmojica05 0:6b90993ae9ec 56 void draw(){
jeanmojica05 0:6b90993ae9ec 57 myServoZ.pulsewidth_us(POSDRAW);
jeanmojica05 0:6b90993ae9ec 58 wait_ms(ss_time*2);
jeanmojica05 0:6b90993ae9ec 59 }
jeanmojica05 0:6b90993ae9ec 60
jeanmojica05 0:6b90993ae9ec 61 void nodraw(){
jeanmojica05 0:6b90993ae9ec 62 myServoZ.pulsewidth_us(MAXPOS);
jeanmojica05 0:6b90993ae9ec 63 wait_ms(ss_time*2);
jeanmojica05 0:6b90993ae9ec 64 }
jeanmojica05 0:6b90993ae9ec 65
jeanmojica05 0:6b90993ae9ec 66
jeanmojica05 0:6b90993ae9ec 67 void vertex2d(uint8_t x, uint8_t y){
jeanmojica05 0:6b90993ae9ec 68
jeanmojica05 0:6b90993ae9ec 69 int pulseX = coord2us(x);
jeanmojica05 0:6b90993ae9ec 70 int pulseY = coord2us(y);
jeanmojica05 0:6b90993ae9ec 71
jeanmojica05 0:6b90993ae9ec 72 myServoX.pulsewidth_us(pulseX);
jeanmojica05 0:6b90993ae9ec 73 myServoY.pulsewidth_us(pulseY);
jeanmojica05 0:6b90993ae9ec 74
jeanmojica05 0:6b90993ae9ec 75 sstime(x,y);
jeanmojica05 0:6b90993ae9ec 76
jeanmojica05 0:6b90993ae9ec 77 }
jeanmojica05 0:6b90993ae9ec 78
jeanmojica05 0:6b90993ae9ec 79 void initdraw(float x, float y){
jeanmojica05 0:6b90993ae9ec 80 vertex2d (x,y);
jeanmojica05 0:6b90993ae9ec 81 draw();
jeanmojica05 0:6b90993ae9ec 82 }
jeanmojica05 0:6b90993ae9ec 83
jeanmojica05 0:6b90993ae9ec 84 void home(){
jeanmojica05 0:6b90993ae9ec 85 nodraw();
jeanmojica05 0:6b90993ae9ec 86 vertex2d(0 ,0);
jeanmojica05 0:6b90993ae9ec 87 }
jeanmojica05 0:6b90993ae9ec 88
jeanmojica05 0:6b90993ae9ec 89 void init_servo()
jeanmojica05 0:6b90993ae9ec 90 {
jeanmojica05 0:6b90993ae9ec 91 myServoX.period_ms(20);
jeanmojica05 0:6b90993ae9ec 92 myServoY.period_ms(20);
jeanmojica05 0:6b90993ae9ec 93 myServoZ.period_ms(20);
jeanmojica05 0:6b90993ae9ec 94
jeanmojica05 0:6b90993ae9ec 95
jeanmojica05 0:6b90993ae9ec 96 }
jeanmojica05 0:6b90993ae9ec 97 void ejecutar(){
jeanmojica05 0:6b90993ae9ec 98 command.printf("se esta ejecutando el dibujo...");
jeanmojica05 0:6b90993ae9ec 99 // ubicar acà el codigo
jeanmojica05 0:6b90993ae9ec 100 }
jeanmojica05 0:6b90993ae9ec 101 void guardar(){
jeanmojica05 0:6b90993ae9ec 102 command.printf("se inicia el comado de guardar..");
jeanmojica05 0:6b90993ae9ec 103 // ubicar acà el codigo
jeanmojica05 0:6b90993ae9ec 104
jeanmojica05 0:6b90993ae9ec 105 }
jeanmojica05 0:6b90993ae9ec 106
jeanmojica05 0:6b90993ae9ec 107 void init_serial()
jeanmojica05 0:6b90993ae9ec 108 {
jeanmojica05 0:6b90993ae9ec 109 command.baud(9600);
jeanmojica05 0:6b90993ae9ec 110 }
jeanmojica05 0:6b90993ae9ec 111 int main() {
jeanmojica05 0:6b90993ae9ec 112 init_servo();
jeanmojica05 0:6b90993ae9ec 113 init_serial();
jeanmojica05 0:6b90993ae9ec 114 home();
jeanmojica05 0:6b90993ae9ec 115 char read_cc;
jeanmojica05 0:6b90993ae9ec 116 pc.printf("Dibujando linea");
jeanmojica05 0:6b90993ae9ec 117 valor= pc.getc();
jeanmojica05 0:6b90993ae9ec 118 if(valor=='FF')
jeanmojica05 0:6b90993ae9ec 119 ejecutar();
jeanmojica05 0:6b90993ae9ec 120
jeanmojica05 0:6b90993ae9ec 121 default: command.printf("error de comando");break ;
jeanmojica05 0:6b90993ae9ec 122 }
jeanmojica05 0:6b90993ae9ec 123 }
jeanmojica05 0:6b90993ae9ec 124 }