Nicolás Camilo Guerrero Otálora
/
Picolo_1_dibuja
codigo incompleto picolo
main.cpp@1:57436dbe2bf7, 2018-03-14 (annotated)
- Committer:
- nicolas_guerrero
- Date:
- Wed Mar 14 02:53:04 2018 +0000
- Revision:
- 1:57436dbe2bf7
- Parent:
- 0:d1c031b9a2c7
codigo picolo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nicolas_guerrero | 0:d1c031b9a2c7 | 1 | #include "mbed.h" |
nicolas_guerrero | 0:d1c031b9a2c7 | 2 | #define MEM_SIZE 5000 |
nicolas_guerrero | 1:57436dbe2bf7 | 3 | #define MEM_TYPE uint32_t |
nicolas_guerrero | 0:d1c031b9a2c7 | 4 | #define MAXPOS 50 // en milimetros |
nicolas_guerrero | 0:d1c031b9a2c7 | 5 | #define SS_TIME 100 // en microsegundos |
nicolas_guerrero | 0:d1c031b9a2c7 | 6 | #define POSDRAW 10 |
nicolas_guerrero | 0:d1c031b9a2c7 | 7 | #define periodo 20 |
nicolas_guerrero | 1:57436dbe2bf7 | 8 | #define CM_EJECUTAR 0xff |
nicolas_guerrero | 1:57436dbe2bf7 | 9 | #define CM_GUARDAR 0xfe |
nicolas_guerrero | 1:57436dbe2bf7 | 10 | #define CM_VERTEX2D 0xfd |
nicolas_guerrero | 1:57436dbe2bf7 | 11 | #define CM_DRAW 0xfc |
nicolas_guerrero | 1:57436dbe2bf7 | 12 | #define CM_NODRAW 0xfb |
nicolas_guerrero | 1:57436dbe2bf7 | 13 | #define CM_STOP 0xfa |
nicolas_guerrero | 1:57436dbe2bf7 | 14 | #define CM_END 0xf0 |
nicolas_guerrero | 0:d1c031b9a2c7 | 15 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 16 | MEM_TYPE arreglo2[MEM_SIZE]; |
nicolas_guerrero | 0:d1c031b9a2c7 | 17 | Serial pc(USBTX, USBRX); |
nicolas_guerrero | 0:d1c031b9a2c7 | 18 | PwmOut motor_x(A3), motor_y(A1), motor_z(A0); |
nicolas_guerrero | 0:d1c031b9a2c7 | 19 | int mem_head = 0,i; |
nicolas_guerrero | 0:d1c031b9a2c7 | 20 | int mem_tail = 0; |
nicolas_guerrero | 0:d1c031b9a2c7 | 21 | uint8_t full = 0; |
nicolas_guerrero | 0:d1c031b9a2c7 | 22 | char b; |
nicolas_guerrero | 1:57436dbe2bf7 | 23 | MEM_TYPE comando,px,py,condicionf; |
nicolas_guerrero | 0:d1c031b9a2c7 | 24 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 25 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 26 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 27 | int coord2us(float coord); |
nicolas_guerrero | 0:d1c031b9a2c7 | 28 | void draw(); |
nicolas_guerrero | 0:d1c031b9a2c7 | 29 | void nodraw(); |
nicolas_guerrero | 0:d1c031b9a2c7 | 30 | void vertex2d(float x, float y); |
nicolas_guerrero | 1:57436dbe2bf7 | 31 | /////////////////////////////////////////////////////// |
nicolas_guerrero | 1:57436dbe2bf7 | 32 | void ejecutar(){ |
nicolas_guerrero | 1:57436dbe2bf7 | 33 | pc.printf("se esta ejecutando el dibujo..."); |
nicolas_guerrero | 1:57436dbe2bf7 | 34 | for(i=0;i<mem_head-1;i++) |
nicolas_guerrero | 1:57436dbe2bf7 | 35 | { |
nicolas_guerrero | 1:57436dbe2bf7 | 36 | if (arreglo2[i]==CM_VERTEX2D)//FD F0 |
nicolas_guerrero | 1:57436dbe2bf7 | 37 | { |
nicolas_guerrero | 1:57436dbe2bf7 | 38 | i++; |
nicolas_guerrero | 1:57436dbe2bf7 | 39 | px=arreglo2[i] |
nicolas_guerrero | 1:57436dbe2bf7 | 40 | |
nicolas_guerrero | 1:57436dbe2bf7 | 41 | } |
nicolas_guerrero | 1:57436dbe2bf7 | 42 | } |
nicolas_guerrero | 1:57436dbe2bf7 | 43 | |
nicolas_guerrero | 1:57436dbe2bf7 | 44 | } |
nicolas_guerrero | 1:57436dbe2bf7 | 45 | ///////////////////////////////////////////////////////////// |
nicolas_guerrero | 1:57436dbe2bf7 | 46 | void guardar(){ |
nicolas_guerrero | 1:57436dbe2bf7 | 47 | pc.printf("se inicia el comado de guardar.."); |
nicolas_guerrero | 1:57436dbe2bf7 | 48 | mem_head=0; |
nicolas_guerrero | 1:57436dbe2bf7 | 49 | do |
nicolas_guerrero | 1:57436dbe2bf7 | 50 | { |
nicolas_guerrero | 1:57436dbe2bf7 | 51 | pc.printf("entro while llenar\n\r"); |
nicolas_guerrero | 1:57436dbe2bf7 | 52 | arreglo2[mem_head]=pc.getc(); |
nicolas_guerrero | 1:57436dbe2bf7 | 53 | b=arreglo2[mem_head]; |
nicolas_guerrero | 1:57436dbe2bf7 | 54 | //pc.printf("posicion %i %c",mem_head,arreglo2[mem_head]); |
nicolas_guerrero | 1:57436dbe2bf7 | 55 | mem_head++; |
nicolas_guerrero | 1:57436dbe2bf7 | 56 | } |
nicolas_guerrero | 1:57436dbe2bf7 | 57 | while(b!=CM_STOP); |
nicolas_guerrero | 1:57436dbe2bf7 | 58 | |
nicolas_guerrero | 1:57436dbe2bf7 | 59 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 60 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 61 | int main() { |
nicolas_guerrero | 0:d1c031b9a2c7 | 62 | // configuracion de periodo |
nicolas_guerrero | 0:d1c031b9a2c7 | 63 | motor_x.period_ms(periodo); |
nicolas_guerrero | 0:d1c031b9a2c7 | 64 | motor_y.period_ms(periodo); |
nicolas_guerrero | 0:d1c031b9a2c7 | 65 | motor_z.period_ms(periodo); |
nicolas_guerrero | 0:d1c031b9a2c7 | 66 | motor_x.pulsewidth_us(725); |
nicolas_guerrero | 0:d1c031b9a2c7 | 67 | motor_y.pulsewidth_us(725); |
nicolas_guerrero | 0:d1c031b9a2c7 | 68 | motor_z.pulsewidth_us(725); |
nicolas_guerrero | 0:d1c031b9a2c7 | 69 | int posx=0; |
nicolas_guerrero | 0:d1c031b9a2c7 | 70 | int posy=0; |
nicolas_guerrero | 1:57436dbe2bf7 | 71 | char caracter; |
nicolas_guerrero | 1:57436dbe2bf7 | 72 | while(1) |
nicolas_guerrero | 0:d1c031b9a2c7 | 73 | { |
nicolas_guerrero | 1:57436dbe2bf7 | 74 | caracter=pc.getc(); |
nicolas_guerrero | 1:57436dbe2bf7 | 75 | switch (caracter) { |
nicolas_guerrero | 1:57436dbe2bf7 | 76 | case CM_EJECUTAR: ejecutar(); break; |
nicolas_guerrero | 1:57436dbe2bf7 | 77 | case CM_GUARDAR: guardar(); break; |
nicolas_guerrero | 1:57436dbe2bf7 | 78 | default: pc.printf("error de comando\r\n");break ; |
nicolas_guerrero | 1:57436dbe2bf7 | 79 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 80 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 81 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 82 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 83 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 84 | int coord2us(float coord) |
nicolas_guerrero | 0:d1c031b9a2c7 | 85 | { |
nicolas_guerrero | 0:d1c031b9a2c7 | 86 | if(0 <= coord <= MAXPOS) |
nicolas_guerrero | 0:d1c031b9a2c7 | 87 | return int(750+coord*1900/50);// u6 |
nicolas_guerrero | 0:d1c031b9a2c7 | 88 | return 750; |
nicolas_guerrero | 0:d1c031b9a2c7 | 89 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 90 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 91 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 92 | void draw() |
nicolas_guerrero | 0:d1c031b9a2c7 | 93 | { |
nicolas_guerrero | 0:d1c031b9a2c7 | 94 | motor_z.pulsewidth_us(POSDRAW); |
nicolas_guerrero | 0:d1c031b9a2c7 | 95 | wait(1); |
nicolas_guerrero | 0:d1c031b9a2c7 | 96 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 97 | void nodraw() |
nicolas_guerrero | 0:d1c031b9a2c7 | 98 | { |
nicolas_guerrero | 0:d1c031b9a2c7 | 99 | motor_z.pulsewidth_us(MAXPOS); |
nicolas_guerrero | 0:d1c031b9a2c7 | 100 | wait(1); |
nicolas_guerrero | 0:d1c031b9a2c7 | 101 | } |
nicolas_guerrero | 0:d1c031b9a2c7 | 102 | void vertex2d(float x, float y){ |
nicolas_guerrero | 0:d1c031b9a2c7 | 103 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 104 | int pulseX = coord2us(x); |
nicolas_guerrero | 0:d1c031b9a2c7 | 105 | int pulseY = coord2us(y); |
nicolas_guerrero | 0:d1c031b9a2c7 | 106 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 107 | motor_x.pulsewidth_us(pulseX); |
nicolas_guerrero | 0:d1c031b9a2c7 | 108 | motor_y.pulsewidth_us(pulseY); |
nicolas_guerrero | 0:d1c031b9a2c7 | 109 | wait_ms(SS_TIME); |
nicolas_guerrero | 0:d1c031b9a2c7 | 110 | |
nicolas_guerrero | 0:d1c031b9a2c7 | 111 | } |