drawing robot

Dependencies:   mbed

ROBOT PICCOLO CON DESPLAZAMIENTO POR CUADRANTES

/media/uploads/miguelmstein/20170608_120134.jpg

VIDEO PICCOLO EN FUNCIONAMIENTO

/media/uploads/miguelmstein/whatsapp_video_2017-06-08_at_9.36.19_pm.mp4

MATERIALES

  • Tarjeta nucleo STM32F446RE
  • Servomotores X3
  • Motores paso a paso X2
  • Tarjeta controladora de motor paso a paso ULN2003APG X2
  • Matriz 8X8 con controlador MAX7219
  • Jumpers
  • PCB
  • Pulsadores
  • LED's

/media/uploads/miguelmstein/20170608_120123.jpg

PROCEDIMIENTO

Se conecto los servomotores y los motores paso a paso a la tarjeta PCB, ésta está previamente conectada a la tarjeta Nucleo. la fuente de alimentación es externa de 12V con regulador integrado a la PCB de 5V.

Advertencia: Para alimentar el circuito se utilizó un regulador LM7805 con salida máxima de corriente de 1AMP.

El código es autoria de los desarrolladores del proyecto tomando como referencia los proyectos anteriormente publicados de funcionamiento de una matriz 8X8 con SPI, movimiento de motores por comunicación serial y además del código de protocolo de comunicación serial y el funcionamiento de los servomotores extraidos del siguiente desarrollador. https://developer.mbed.org/users/fabeltranm/

Anotaciones y explicaciones en el código mismo

<</codigo>>

  1. include "mbed.h" /* DIN , NC, CLK SPI max72_spi(PB_5, NC, PB_3); DigitalOut load(PA_4); LOAD
  • / PwmOut servo1(PB_0); Servos Y PwmOut servo2(PA_1); Servos X PwmOut servo3(PA_0); Servos Z

DigitalOut A(PA_10); paso a paso DigitalOut B(PB_4); DigitalOut C(PB_10); DigitalOut D(PA_8);

DigitalOut E(PA_9); paso a paso DigitalOut F(PC_7); DigitalOut G(PB_6); DigitalOut H(PA_7);

DigitalOut L1(PC_1); led 1 DigitalOut L2(PB_9); led 2

DigitalIn S1(PC_0); boton 1 DigitalIn S2(PB_8); boton 2

Serial command(USBTX, USBRX); /* define registros de matriz MAX7219

  1. define max7219_reg_noop 0x00
  2. define max7219_reg_digit0 0x01
  3. define max7219_reg_digit1 0x02
  4. define max7219_reg_digit2 0x03
  5. define max7219_reg_digit3 0x04
  6. define max7219_reg_digit4 0x05
  7. define max7219_reg_digit5 0x06
  8. define max7219_reg_digit6 0x07
  9. define max7219_reg_digit7 0x08
  10. define max7219_reg_decodeMode 0x09
  11. define max7219_reg_intensity 0x0a
  12. define max7219_reg_scanLimit 0x0b
  13. define max7219_reg_shutdown 0x0c
  14. define max7219_reg_displayTest 0x0f
  1. define LOW 0
  2. define HIGH 1

void maxSingle( int reg, int col) { maxSingle es la funcion facil para usar una sola matriz max7219 load = LOW; comienza max72_spi.write(reg); especifica registro max72_spi.write(col); coloca datos load = HIGH; acegura que los datos estan cargados(en el cambio en alto de LOAD/CS) } void setup () { iniciacion de la matriz MAX7219 configuracion SPI : 8 bits, modo 0 max72_spi.format(8, 0); frecuencia MAX7219(10 MHZ) maxSingle(max7219_reg_scanLimit, 0x07); maxSingle(max7219_reg_decodeMode, 0x00); usando una matriz led (sin digitos) maxSingle(max7219_reg_shutdown, 0x01); no para modo apagado maxSingle(max7219_reg_displayTest, 0x00); no test de display for (int e=1; e<=8; e++) { registros vacios, apaga todos los LEDs maxSingle(e,0); } maxSingle(max7219_reg_intensity, 0x03 & 0x0f);intensidad luminica. rango: 0x00 a 0x0f } void M() {

maxSingle(1,0); maxSingle(2,0); maxSingle(3,0); maxSingle(4,0); maxSingle(5,0); maxSingle(6,0); maxSingle(7,0); maxSingle(8,0);

}

  • / void PASO(){ // paso hacia adelante /// for(int i=0; i<170; i++){ wait_us(950); A=1; B=0; C=0; D=0;

E=1; F=0; G=0; H=0;

wait_us(950); A=1; B=1; C=0; D=0;

E=1; F=1; G=0; H=0;

wait_us(950); A=0; B=1; C=0; D=0;

E=0; F=1; G=0; H=0;

wait_us(950); A=0; B=1; C=1; D=0;

E=0; F=1; G=1; H=0;

wait_us(950); A=0; B=0; C=1; D=0;

E=0; F=0; G=1; H=0;

wait_us(950); A=0; B=0; C=1; D=1;

E=0; F=0; G=1; H=1;

wait_us(950); A=0; B=0; C=0; D=1;

E=0; F=0; G=0; H=1;

wait_us(950); A=1; B=0; C=0; D=1;

E=1; F=0; G=0; H=1; } } void REV(){ // paso hacia atras /// for(int i=0; i<170; i++){ wait_us(950); A=1; B=0; C=0; D=1;

E=1; F=0; G=0; H=1;

wait_us(950); A=0; B=0; C=0; D=1;

E=0; F=0; G=0; H=1;

wait_us(950); A=0; B=0; C=1; D=1;

E=0; F=0; G=1; H=1;

wait_us(950); A=0; B=0; C=1; D=0;

E=0; F=0; G=1; H=0;

wait_us(950); A=0; B=1; C=1; D=0;

E=0; F=1; G=1; H=0;

wait_us(950); A=0; B=1; C=0; D=0;

E=0; F=1; G=0; H=0;

wait_us(950); A=1; B=1; C=0; D=0;

E=1; F=1; G=0; H=0;

wait_us(950); A=1; B=0; C=0; D=0;

E=1; F=0; G=0; H=0; } } void RAYA(){ /// funcion raya // wait(0.5); servo1.pulsewidth_us(1500); servo3.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(650); servo3.pulsewidth_us(650); wait(0.5); }

void e(){ /// letra e /// wait(0.5); servo1.pulsewidth_us(500); servo2.pulsewidth_us(500); wait(0.2); servo3.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(1500); wait(0.5); servo1.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(500); wait(0.5); servo3.pulsewidth_us(650); wait(0.5); servo1.pulsewidth_us(800); servo2.pulsewidth_us(1500); wait(0.5); servo3.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(800); wait(0.5); servo3.pulsewidth_us(1000); } void c(){ /// letra c /// wait(0.5); servo1.pulsewidth_us(500); servo2.pulsewidth_us(500); wait(0.2); servo3.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(1500); wait(0.5); servo1.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(500); wait(0.5); servo3.pulsewidth_us(600); } void i(){ /// letra i /// wait(0.5); servo1.pulsewidth_us(500); servo2.pulsewidth_us(500); wait(0.2); servo3.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(1000); wait(0.5); servo1.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(1500); wait(0.5); servo2.pulsewidth_us(600); wait(0.5); servo3.pulsewidth_us(600); } void o(){ /// letra o /// unsigned int m=600; for (int i=0; i<100;i++){ servo2.pulsewidth_us(m); servo1.pulsewidth_us(m); m=m+10; wait(0.05); } } void CEROS(){ //// lleva los servos a la posiscion de movimiento /// servo1.pulsewidth_us(1000); servo2.pulsewidth_us(1500); servo3.pulsewidth_us(600); } void ecci(){ // funcion palabra ECCI // e(); PASO(); c(); PASO(); c(); PASO(); i(); } void letra(){ /// funcion letras por comunicacion serial /// char opcion= command.getc(); switch(opcion){

case '1': e(); break; case '2': c(); break; case '3': i(); break; case '4': o(); break; case '5': PASO(); break; default: break; } } ///////////////////////////// int z=0; int w=0; int main() {

servo1.period_ms(20); servo2.period_ms(20); servo3.period_ms(20);

while(1) { z=S1; w=S2;

if (z==1){ /// si se oprime pulsador 1 // L1=1; ecci(); CEROS(); REV(); REV(); REV(); REV(); L1=0; } else if (w==1){ /// si se oprime pulsador 2 // o(); PASO(); }

else {

} z=0; w=0; } cierra while } cierra int

Committer:
miguelmstein
Date:
Thu Jun 08 16:48:52 2017 +0000
Revision:
0:360766f47128
piccolo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelmstein 0:360766f47128 1 #include "mbed.h"
miguelmstein 0:360766f47128 2 /*
miguelmstein 0:360766f47128 3 // DIN , NC, CLK
miguelmstein 0:360766f47128 4 SPI max72_spi(PB_5, NC, PB_3);
miguelmstein 0:360766f47128 5 DigitalOut load(PA_4); // LOAD
miguelmstein 0:360766f47128 6 */
miguelmstein 0:360766f47128 7 PwmOut servo1(PB_0); // Servos Y
miguelmstein 0:360766f47128 8 PwmOut servo2(PA_1); // Servos X
miguelmstein 0:360766f47128 9 PwmOut servo3(PA_0); // Servos Z
miguelmstein 0:360766f47128 10
miguelmstein 0:360766f47128 11 DigitalOut A(PA_10); // paso a paso
miguelmstein 0:360766f47128 12 DigitalOut B(PB_4); //
miguelmstein 0:360766f47128 13 DigitalOut C(PB_10); //
miguelmstein 0:360766f47128 14 DigitalOut D(PA_8); //
miguelmstein 0:360766f47128 15
miguelmstein 0:360766f47128 16 DigitalOut E(PA_9); // paso a paso
miguelmstein 0:360766f47128 17 DigitalOut F(PC_7); //
miguelmstein 0:360766f47128 18 DigitalOut G(PB_6); //
miguelmstein 0:360766f47128 19 DigitalOut H(PA_7); //
miguelmstein 0:360766f47128 20
miguelmstein 0:360766f47128 21 DigitalOut L1(PC_1); // led 1
miguelmstein 0:360766f47128 22 DigitalOut L2(PB_9); // led 2
miguelmstein 0:360766f47128 23
miguelmstein 0:360766f47128 24 DigitalIn S1(PC_0); // boton 1
miguelmstein 0:360766f47128 25 DigitalIn S2(PB_8); // boton 2
miguelmstein 0:360766f47128 26
miguelmstein 0:360766f47128 27 Serial command(USBTX, USBRX);
miguelmstein 0:360766f47128 28 /*
miguelmstein 0:360766f47128 29 // define registros de matriz MAX7219
miguelmstein 0:360766f47128 30 #define max7219_reg_noop 0x00
miguelmstein 0:360766f47128 31 #define max7219_reg_digit0 0x01
miguelmstein 0:360766f47128 32 #define max7219_reg_digit1 0x02
miguelmstein 0:360766f47128 33 #define max7219_reg_digit2 0x03
miguelmstein 0:360766f47128 34 #define max7219_reg_digit3 0x04
miguelmstein 0:360766f47128 35 #define max7219_reg_digit4 0x05
miguelmstein 0:360766f47128 36 #define max7219_reg_digit5 0x06
miguelmstein 0:360766f47128 37 #define max7219_reg_digit6 0x07
miguelmstein 0:360766f47128 38 #define max7219_reg_digit7 0x08
miguelmstein 0:360766f47128 39 #define max7219_reg_decodeMode 0x09
miguelmstein 0:360766f47128 40 #define max7219_reg_intensity 0x0a
miguelmstein 0:360766f47128 41 #define max7219_reg_scanLimit 0x0b
miguelmstein 0:360766f47128 42 #define max7219_reg_shutdown 0x0c
miguelmstein 0:360766f47128 43 #define max7219_reg_displayTest 0x0f
miguelmstein 0:360766f47128 44
miguelmstein 0:360766f47128 45 #define LOW 0
miguelmstein 0:360766f47128 46 #define HIGH 1
miguelmstein 0:360766f47128 47
miguelmstein 0:360766f47128 48
miguelmstein 0:360766f47128 49 void maxSingle( int reg, int col) {
miguelmstein 0:360766f47128 50 //maxSingle es la funcion facil para usar una sola matriz max7219
miguelmstein 0:360766f47128 51 load = LOW; // comienza
miguelmstein 0:360766f47128 52 max72_spi.write(reg); // especifica registro
miguelmstein 0:360766f47128 53 max72_spi.write(col); // coloca datos
miguelmstein 0:360766f47128 54 load = HIGH; // acegura que los datos estan cargados(en el cambio en alto de LOAD/CS)
miguelmstein 0:360766f47128 55 }
miguelmstein 0:360766f47128 56 void setup () {
miguelmstein 0:360766f47128 57 // iniciacion de la matriz MAX7219
miguelmstein 0:360766f47128 58 // configuracion SPI : 8 bits, modo 0
miguelmstein 0:360766f47128 59 max72_spi.format(8, 0);
miguelmstein 0:360766f47128 60 // frecuencia MAX7219(10 MHZ)
miguelmstein 0:360766f47128 61 maxSingle(max7219_reg_scanLimit, 0x07);
miguelmstein 0:360766f47128 62 maxSingle(max7219_reg_decodeMode, 0x00); // usando una matriz led (sin digitos)
miguelmstein 0:360766f47128 63 maxSingle(max7219_reg_shutdown, 0x01); // no para modo apagado
miguelmstein 0:360766f47128 64 maxSingle(max7219_reg_displayTest, 0x00); // no test de display
miguelmstein 0:360766f47128 65 for (int e=1; e<=8; e++) { // registros vacios, apaga todos los LEDs
miguelmstein 0:360766f47128 66 maxSingle(e,0);
miguelmstein 0:360766f47128 67 }
miguelmstein 0:360766f47128 68 maxSingle(max7219_reg_intensity, 0x03 & 0x0f);//intensidad luminica. rango: 0x00 a 0x0f
miguelmstein 0:360766f47128 69 }
miguelmstein 0:360766f47128 70 void M() {
miguelmstein 0:360766f47128 71
miguelmstein 0:360766f47128 72 maxSingle(1,0);
miguelmstein 0:360766f47128 73 maxSingle(2,0);
miguelmstein 0:360766f47128 74 maxSingle(3,0);
miguelmstein 0:360766f47128 75 maxSingle(4,0);
miguelmstein 0:360766f47128 76 maxSingle(5,0);
miguelmstein 0:360766f47128 77 maxSingle(6,0);
miguelmstein 0:360766f47128 78 maxSingle(7,0);
miguelmstein 0:360766f47128 79 maxSingle(8,0);
miguelmstein 0:360766f47128 80
miguelmstein 0:360766f47128 81 }
miguelmstein 0:360766f47128 82 */
miguelmstein 0:360766f47128 83 void PASO(){
miguelmstein 0:360766f47128 84 for(int i=0; i<170; i++){
miguelmstein 0:360766f47128 85 wait_us(950);
miguelmstein 0:360766f47128 86 A=1;
miguelmstein 0:360766f47128 87 B=0;
miguelmstein 0:360766f47128 88 C=0;
miguelmstein 0:360766f47128 89 D=0;
miguelmstein 0:360766f47128 90
miguelmstein 0:360766f47128 91 E=1;
miguelmstein 0:360766f47128 92 F=0;
miguelmstein 0:360766f47128 93 G=0;
miguelmstein 0:360766f47128 94 H=0;
miguelmstein 0:360766f47128 95
miguelmstein 0:360766f47128 96 wait_us(950);
miguelmstein 0:360766f47128 97 A=1;
miguelmstein 0:360766f47128 98 B=1;
miguelmstein 0:360766f47128 99 C=0;
miguelmstein 0:360766f47128 100 D=0;
miguelmstein 0:360766f47128 101
miguelmstein 0:360766f47128 102 E=1;
miguelmstein 0:360766f47128 103 F=1;
miguelmstein 0:360766f47128 104 G=0;
miguelmstein 0:360766f47128 105 H=0;
miguelmstein 0:360766f47128 106
miguelmstein 0:360766f47128 107 wait_us(950);
miguelmstein 0:360766f47128 108 A=0;
miguelmstein 0:360766f47128 109 B=1;
miguelmstein 0:360766f47128 110 C=0;
miguelmstein 0:360766f47128 111 D=0;
miguelmstein 0:360766f47128 112
miguelmstein 0:360766f47128 113 E=0;
miguelmstein 0:360766f47128 114 F=1;
miguelmstein 0:360766f47128 115 G=0;
miguelmstein 0:360766f47128 116 H=0;
miguelmstein 0:360766f47128 117
miguelmstein 0:360766f47128 118 wait_us(950);
miguelmstein 0:360766f47128 119 A=0;
miguelmstein 0:360766f47128 120 B=1;
miguelmstein 0:360766f47128 121 C=1;
miguelmstein 0:360766f47128 122 D=0;
miguelmstein 0:360766f47128 123
miguelmstein 0:360766f47128 124 E=0;
miguelmstein 0:360766f47128 125 F=1;
miguelmstein 0:360766f47128 126 G=1;
miguelmstein 0:360766f47128 127 H=0;
miguelmstein 0:360766f47128 128
miguelmstein 0:360766f47128 129 wait_us(950);
miguelmstein 0:360766f47128 130 A=0;
miguelmstein 0:360766f47128 131 B=0;
miguelmstein 0:360766f47128 132 C=1;
miguelmstein 0:360766f47128 133 D=0;
miguelmstein 0:360766f47128 134
miguelmstein 0:360766f47128 135 E=0;
miguelmstein 0:360766f47128 136 F=0;
miguelmstein 0:360766f47128 137 G=1;
miguelmstein 0:360766f47128 138 H=0;
miguelmstein 0:360766f47128 139
miguelmstein 0:360766f47128 140 wait_us(950);
miguelmstein 0:360766f47128 141 A=0;
miguelmstein 0:360766f47128 142 B=0;
miguelmstein 0:360766f47128 143 C=1;
miguelmstein 0:360766f47128 144 D=1;
miguelmstein 0:360766f47128 145
miguelmstein 0:360766f47128 146 E=0;
miguelmstein 0:360766f47128 147 F=0;
miguelmstein 0:360766f47128 148 G=1;
miguelmstein 0:360766f47128 149 H=1;
miguelmstein 0:360766f47128 150
miguelmstein 0:360766f47128 151 wait_us(950);
miguelmstein 0:360766f47128 152 A=0;
miguelmstein 0:360766f47128 153 B=0;
miguelmstein 0:360766f47128 154 C=0;
miguelmstein 0:360766f47128 155 D=1;
miguelmstein 0:360766f47128 156
miguelmstein 0:360766f47128 157 E=0;
miguelmstein 0:360766f47128 158 F=0;
miguelmstein 0:360766f47128 159 G=0;
miguelmstein 0:360766f47128 160 H=1;
miguelmstein 0:360766f47128 161
miguelmstein 0:360766f47128 162 wait_us(950);
miguelmstein 0:360766f47128 163 A=1;
miguelmstein 0:360766f47128 164 B=0;
miguelmstein 0:360766f47128 165 C=0;
miguelmstein 0:360766f47128 166 D=1;
miguelmstein 0:360766f47128 167
miguelmstein 0:360766f47128 168 E=1;
miguelmstein 0:360766f47128 169 F=0;
miguelmstein 0:360766f47128 170 G=0;
miguelmstein 0:360766f47128 171 H=1;
miguelmstein 0:360766f47128 172 }
miguelmstein 0:360766f47128 173 }
miguelmstein 0:360766f47128 174 void REV(){
miguelmstein 0:360766f47128 175 for(int i=0; i<170; i++){
miguelmstein 0:360766f47128 176 wait_us(950);
miguelmstein 0:360766f47128 177 A=1;
miguelmstein 0:360766f47128 178 B=0;
miguelmstein 0:360766f47128 179 C=0;
miguelmstein 0:360766f47128 180 D=1;
miguelmstein 0:360766f47128 181
miguelmstein 0:360766f47128 182 E=1;
miguelmstein 0:360766f47128 183 F=0;
miguelmstein 0:360766f47128 184 G=0;
miguelmstein 0:360766f47128 185 H=1;
miguelmstein 0:360766f47128 186
miguelmstein 0:360766f47128 187 wait_us(950);
miguelmstein 0:360766f47128 188 A=0;
miguelmstein 0:360766f47128 189 B=0;
miguelmstein 0:360766f47128 190 C=0;
miguelmstein 0:360766f47128 191 D=1;
miguelmstein 0:360766f47128 192
miguelmstein 0:360766f47128 193 E=0;
miguelmstein 0:360766f47128 194 F=0;
miguelmstein 0:360766f47128 195 G=0;
miguelmstein 0:360766f47128 196 H=1;
miguelmstein 0:360766f47128 197
miguelmstein 0:360766f47128 198 wait_us(950);
miguelmstein 0:360766f47128 199 A=0;
miguelmstein 0:360766f47128 200 B=0;
miguelmstein 0:360766f47128 201 C=1;
miguelmstein 0:360766f47128 202 D=1;
miguelmstein 0:360766f47128 203
miguelmstein 0:360766f47128 204 E=0;
miguelmstein 0:360766f47128 205 F=0;
miguelmstein 0:360766f47128 206 G=1;
miguelmstein 0:360766f47128 207 H=1;
miguelmstein 0:360766f47128 208
miguelmstein 0:360766f47128 209 wait_us(950);
miguelmstein 0:360766f47128 210 A=0;
miguelmstein 0:360766f47128 211 B=0;
miguelmstein 0:360766f47128 212 C=1;
miguelmstein 0:360766f47128 213 D=0;
miguelmstein 0:360766f47128 214
miguelmstein 0:360766f47128 215 E=0;
miguelmstein 0:360766f47128 216 F=0;
miguelmstein 0:360766f47128 217 G=1;
miguelmstein 0:360766f47128 218 H=0;
miguelmstein 0:360766f47128 219
miguelmstein 0:360766f47128 220 wait_us(950);
miguelmstein 0:360766f47128 221 A=0;
miguelmstein 0:360766f47128 222 B=1;
miguelmstein 0:360766f47128 223 C=1;
miguelmstein 0:360766f47128 224 D=0;
miguelmstein 0:360766f47128 225
miguelmstein 0:360766f47128 226 E=0;
miguelmstein 0:360766f47128 227 F=1;
miguelmstein 0:360766f47128 228 G=1;
miguelmstein 0:360766f47128 229 H=0;
miguelmstein 0:360766f47128 230
miguelmstein 0:360766f47128 231 wait_us(950);
miguelmstein 0:360766f47128 232 A=0;
miguelmstein 0:360766f47128 233 B=1;
miguelmstein 0:360766f47128 234 C=0;
miguelmstein 0:360766f47128 235 D=0;
miguelmstein 0:360766f47128 236
miguelmstein 0:360766f47128 237 E=0;
miguelmstein 0:360766f47128 238 F=1;
miguelmstein 0:360766f47128 239 G=0;
miguelmstein 0:360766f47128 240 H=0;
miguelmstein 0:360766f47128 241
miguelmstein 0:360766f47128 242 wait_us(950);
miguelmstein 0:360766f47128 243 A=1;
miguelmstein 0:360766f47128 244 B=1;
miguelmstein 0:360766f47128 245 C=0;
miguelmstein 0:360766f47128 246 D=0;
miguelmstein 0:360766f47128 247
miguelmstein 0:360766f47128 248 E=1;
miguelmstein 0:360766f47128 249 F=1;
miguelmstein 0:360766f47128 250 G=0;
miguelmstein 0:360766f47128 251 H=0;
miguelmstein 0:360766f47128 252
miguelmstein 0:360766f47128 253 wait_us(950);
miguelmstein 0:360766f47128 254 A=1;
miguelmstein 0:360766f47128 255 B=0;
miguelmstein 0:360766f47128 256 C=0;
miguelmstein 0:360766f47128 257 D=0;
miguelmstein 0:360766f47128 258
miguelmstein 0:360766f47128 259 E=1;
miguelmstein 0:360766f47128 260 F=0;
miguelmstein 0:360766f47128 261 G=0;
miguelmstein 0:360766f47128 262 H=0;
miguelmstein 0:360766f47128 263 }
miguelmstein 0:360766f47128 264 }
miguelmstein 0:360766f47128 265 void RAYA(){
miguelmstein 0:360766f47128 266 wait(0.5);
miguelmstein 0:360766f47128 267 servo1.pulsewidth_us(1500);
miguelmstein 0:360766f47128 268 servo3.pulsewidth_us(1500);
miguelmstein 0:360766f47128 269 wait(0.5);
miguelmstein 0:360766f47128 270 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 271 wait(0.5);
miguelmstein 0:360766f47128 272 servo2.pulsewidth_us(650);
miguelmstein 0:360766f47128 273 servo3.pulsewidth_us(650);
miguelmstein 0:360766f47128 274 wait(0.5);
miguelmstein 0:360766f47128 275 }
miguelmstein 0:360766f47128 276
miguelmstein 0:360766f47128 277
miguelmstein 0:360766f47128 278
miguelmstein 0:360766f47128 279 void e(){
miguelmstein 0:360766f47128 280 wait(0.5);
miguelmstein 0:360766f47128 281 servo1.pulsewidth_us(500);
miguelmstein 0:360766f47128 282 servo2.pulsewidth_us(500);
miguelmstein 0:360766f47128 283 wait(0.2);
miguelmstein 0:360766f47128 284 servo3.pulsewidth_us(1500);
miguelmstein 0:360766f47128 285 wait(0.5);
miguelmstein 0:360766f47128 286 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 287 wait(0.5);
miguelmstein 0:360766f47128 288 servo1.pulsewidth_us(1500);
miguelmstein 0:360766f47128 289 wait(0.5);
miguelmstein 0:360766f47128 290 servo2.pulsewidth_us(500);
miguelmstein 0:360766f47128 291 wait(0.5);
miguelmstein 0:360766f47128 292 servo3.pulsewidth_us(650);
miguelmstein 0:360766f47128 293 wait(0.5);
miguelmstein 0:360766f47128 294 servo1.pulsewidth_us(800);
miguelmstein 0:360766f47128 295 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 296 wait(0.5);
miguelmstein 0:360766f47128 297 servo3.pulsewidth_us(1500);
miguelmstein 0:360766f47128 298 wait(0.5);
miguelmstein 0:360766f47128 299 servo2.pulsewidth_us(800);
miguelmstein 0:360766f47128 300 wait(0.5);
miguelmstein 0:360766f47128 301 servo3.pulsewidth_us(1000);
miguelmstein 0:360766f47128 302 }
miguelmstein 0:360766f47128 303 void c(){
miguelmstein 0:360766f47128 304 wait(0.5);
miguelmstein 0:360766f47128 305 servo1.pulsewidth_us(500);
miguelmstein 0:360766f47128 306 servo2.pulsewidth_us(500);
miguelmstein 0:360766f47128 307 wait(0.2);
miguelmstein 0:360766f47128 308 servo3.pulsewidth_us(1500);
miguelmstein 0:360766f47128 309 wait(0.5);
miguelmstein 0:360766f47128 310 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 311 wait(0.5);
miguelmstein 0:360766f47128 312 servo1.pulsewidth_us(1500);
miguelmstein 0:360766f47128 313 wait(0.5);
miguelmstein 0:360766f47128 314 servo2.pulsewidth_us(500);
miguelmstein 0:360766f47128 315 wait(0.5);
miguelmstein 0:360766f47128 316 servo3.pulsewidth_us(600);
miguelmstein 0:360766f47128 317 }
miguelmstein 0:360766f47128 318 void i(){
miguelmstein 0:360766f47128 319 wait(0.5);
miguelmstein 0:360766f47128 320 servo1.pulsewidth_us(500);
miguelmstein 0:360766f47128 321 servo2.pulsewidth_us(500);
miguelmstein 0:360766f47128 322 wait(0.2);
miguelmstein 0:360766f47128 323 servo3.pulsewidth_us(1500);
miguelmstein 0:360766f47128 324 wait(0.5);
miguelmstein 0:360766f47128 325 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 326 wait(0.5);
miguelmstein 0:360766f47128 327 servo2.pulsewidth_us(1000);
miguelmstein 0:360766f47128 328 wait(0.5);
miguelmstein 0:360766f47128 329 servo1.pulsewidth_us(1500);
miguelmstein 0:360766f47128 330 wait(0.5);
miguelmstein 0:360766f47128 331 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 332 wait(0.5);
miguelmstein 0:360766f47128 333 servo2.pulsewidth_us(600);
miguelmstein 0:360766f47128 334 wait(0.5);
miguelmstein 0:360766f47128 335 servo3.pulsewidth_us(600);
miguelmstein 0:360766f47128 336 }
miguelmstein 0:360766f47128 337 void o(){
miguelmstein 0:360766f47128 338 unsigned int m=600;
miguelmstein 0:360766f47128 339 for (int i=0; i<100;i++){
miguelmstein 0:360766f47128 340 servo2.pulsewidth_us(m);
miguelmstein 0:360766f47128 341 servo1.pulsewidth_us(m);
miguelmstein 0:360766f47128 342 m=m+10;
miguelmstein 0:360766f47128 343 wait(0.05);
miguelmstein 0:360766f47128 344 }
miguelmstein 0:360766f47128 345 }
miguelmstein 0:360766f47128 346 void CEROS(){
miguelmstein 0:360766f47128 347 servo1.pulsewidth_us(1000);
miguelmstein 0:360766f47128 348 servo2.pulsewidth_us(1500);
miguelmstein 0:360766f47128 349 servo3.pulsewidth_us(600);
miguelmstein 0:360766f47128 350 }
miguelmstein 0:360766f47128 351 void ecci(){
miguelmstein 0:360766f47128 352 e();
miguelmstein 0:360766f47128 353 PASO();
miguelmstein 0:360766f47128 354 c();
miguelmstein 0:360766f47128 355 PASO();
miguelmstein 0:360766f47128 356 c();
miguelmstein 0:360766f47128 357 PASO();
miguelmstein 0:360766f47128 358 i();
miguelmstein 0:360766f47128 359 }
miguelmstein 0:360766f47128 360 void letra(){
miguelmstein 0:360766f47128 361 char opcion= command.getc();
miguelmstein 0:360766f47128 362 switch(opcion){
miguelmstein 0:360766f47128 363
miguelmstein 0:360766f47128 364 case '1':
miguelmstein 0:360766f47128 365 e();
miguelmstein 0:360766f47128 366 break;
miguelmstein 0:360766f47128 367 case '2':
miguelmstein 0:360766f47128 368 c();
miguelmstein 0:360766f47128 369 break;
miguelmstein 0:360766f47128 370 case '3':
miguelmstein 0:360766f47128 371 i();
miguelmstein 0:360766f47128 372 break;
miguelmstein 0:360766f47128 373 case '4':
miguelmstein 0:360766f47128 374 o();
miguelmstein 0:360766f47128 375 break;
miguelmstein 0:360766f47128 376 case '5':
miguelmstein 0:360766f47128 377 PASO();
miguelmstein 0:360766f47128 378 break;
miguelmstein 0:360766f47128 379 default:
miguelmstein 0:360766f47128 380 break;
miguelmstein 0:360766f47128 381 }
miguelmstein 0:360766f47128 382 }
miguelmstein 0:360766f47128 383 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
miguelmstein 0:360766f47128 384 int z=0;
miguelmstein 0:360766f47128 385 int w=0;
miguelmstein 0:360766f47128 386 int main() {
miguelmstein 0:360766f47128 387
miguelmstein 0:360766f47128 388 servo1.period_ms(20);
miguelmstein 0:360766f47128 389 servo2.period_ms(20);
miguelmstein 0:360766f47128 390 servo3.period_ms(20);
miguelmstein 0:360766f47128 391
miguelmstein 0:360766f47128 392 while(1) {
miguelmstein 0:360766f47128 393 z=S1;
miguelmstein 0:360766f47128 394 w=S2;
miguelmstein 0:360766f47128 395
miguelmstein 0:360766f47128 396 if (z==1){
miguelmstein 0:360766f47128 397 L1=1;
miguelmstein 0:360766f47128 398 ecci();
miguelmstein 0:360766f47128 399 CEROS();
miguelmstein 0:360766f47128 400 REV();
miguelmstein 0:360766f47128 401 REV();
miguelmstein 0:360766f47128 402 REV();
miguelmstein 0:360766f47128 403 REV();
miguelmstein 0:360766f47128 404 L1=0;
miguelmstein 0:360766f47128 405 }
miguelmstein 0:360766f47128 406 else if (w==1){
miguelmstein 0:360766f47128 407 o();
miguelmstein 0:360766f47128 408 PASO();
miguelmstein 0:360766f47128 409 }
miguelmstein 0:360766f47128 410
miguelmstein 0:360766f47128 411 else {
miguelmstein 0:360766f47128 412
miguelmstein 0:360766f47128 413 }
miguelmstein 0:360766f47128 414 z=0;
miguelmstein 0:360766f47128 415 w=0;
miguelmstein 0:360766f47128 416 } // cierra while
miguelmstein 0:360766f47128 417 } // cierra int