el siguiente programa muestra la funcion de ejecutar y guardar del piccolo

Dependencies:   mbed

Fork of 01-02EjercicioComunicacionSerial by ferney alberto beltran molina

Committer:
albeiro
Date:
Wed Mar 14 05:33:27 2018 +0000
Revision:
1:3989eb5bad79
Parent:
0:abaa541e10d5
programa piccolo

Who changed what in which revision?

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