establece la posicion de referencia del brazo robotico, manda la posicion de los encoders por bluetooth y permite el control remoto a traves de un dispositivo android.
Diff: main.cpp
- Revision:
- 1:7c07ddc42a4c
- Parent:
- 0:b7978deb977b
- Child:
- 2:e289744b4c57
--- a/main.cpp Tue May 30 02:13:36 2017 +0000 +++ b/main.cpp Sun Jun 04 23:57:58 2017 +0000 @@ -17,6 +17,7 @@ Motor m4(PB_6, PB_12, PB_11); Motor m5(PC_7, PB_2, PB_1); Motor m6(PB_9, PB_15, PB_13); +Motor cinta(PB_8, PC_4, PF_5); // declaramos las entradas de los micropulsadores DigitalIn mp1(PA_9, PullUp); // (pin, modo) @@ -24,22 +25,25 @@ DigitalIn mp3(PB_10, PullUp); DigitalIn mp4(PB_4, PullUp); DigitalIn mp5(PB_5, PullUp); -DigitalIn mp6(PB_3, PullUp); +DigitalIn sensor(PB_3, PullUp); // declaramos el bluetooth Serial bt(PA_2, PA_3); // (RX, TX) (puerto serial 2) -Ticker ticker1; // iniciamos un ticker +// declaramos otras variables que utilizaremos +Ticker ticker1, tiker2; // iniciamos dos tickers DigitalOut led1 (LED1); // declaramos el LED1 DigitalOut led2 (LED2); // declaramos el LED2 DigitalOut led3 (LED3); // declaramos el LED3 int pulsos[6]={0,0,0,0,0,0}; // iniciamos el array pulsos +int posiciones[10]; // declaramos el array de posiciones char dato=0; // declaramos el prototipo de las funciones que utilizaremos -void enviar_bt(); // prototipo de la funcion que ejecutara el ticker +void enviar_bt(); // prototipo de la funcion que ejecutara el ticker1 +void encenderLED1(); // prototipo de la funcion que ejecutara el ticker1 void sethome(); // prototipo de la funcion que nos calibrara la posicion hard home de referencia -void home(); // prototipo de la funcion que nos llevara hasta la posicion hard home +void posicion(); // prototipo de la funcion que nos llevara hasta la posicion especificada void mover(int,int,float); // prototipo de la funcion que movera cada motor void frenar(int); // prototipo de la funcion que frenara cada motor void pinza(int); // prototipo de la funcion que abrira (-1) o cerrara (1) la pinza @@ -55,7 +59,8 @@ bt.baud(9600); // velocidad de transmision del bluetooth a 9600 baudios - ticker1.attach(&enviar_bt, 0.5); // asignamos la funcion "enviar_bt" a la interrupcion del "ticker1" y le damos un intervalo de 0.5s + ticker1.attach(&enviar_bt, 0.5); // asignamos la funcion "enviar_bt" al protocolo de interrupcion del "ticker1" y le damos un intervalo de 0.5s + ticker2.attach(&encenderLED1, 0.05); // asignamos la funcion "encenderLED1" al protocolo de interrupcion del "ticker2" y le damos un intervalo de 0.05s sethome(); // establecemos la posicion de referencia @@ -132,6 +137,12 @@ bt.printf(" pulsos encoder 1:%d\n pulsos encoder 2:%d\n pulsos encoder 3:%d\n pulsos encoder 4:%d\n pulsos encoder 5:%d\n", pulsos[1],pulsos[2],pulsos[3],pulsos[4],pulsos[5]); // envia el valor de "pulsos" por bluetooth } +void encenderLED1() +{ + if (mp1==0) led1=1; // si se pulsa el mp1 se enciende el LED1 + else led1=0; // si no se apaga +} + void sethome() { led2=1; @@ -141,7 +152,7 @@ while (mp1==1) // Mientras no se pulse el microswitch { enc=enc1.getPulses(); // leemos el contador del encoder - mover(1,dir,1); // movemos el motor en la dirección inicial + mover(1,dir,0.4); // movemos el motor en la dirección inicial wait(0.01); // esperamos 0.01s if (enc==enc1.getPulses()) // Si el contador no se ha incrementado, hemos llegado al extremo dir=-1; // se cambia la dirección del motor @@ -153,12 +164,12 @@ while (dir==1) // mientras la direccion sea hacia delante: { while (mp2==0) // Mientras se mantenga pulsado el boton - mover(2,dir,1); // se seguira moviendo el motor en la direccion inicial + mover(2,dir,0.4); // se seguira moviendo el motor en la direccion inicial dir=-1; // se cambia a direccion while (mp2==1) // Mientras el MP esté sin pulsar: { enc=enc2.getPulses(); // leemos el valor de los encoders - mover(2,dir,1); // movemos el motor + mover(2,dir,0.4); // movemos el motor wait(0.01); // esperamos 0.01s if(enc==enc2.getPulses()) // Si el contador no ha cambiado dir=1; // cambiamos la dirección @@ -171,12 +182,12 @@ while (dir==1) // mientras la direccion sea hacia delante: { while (mp3==0) // Mientras se mantenga pulsado el boton - mover(3,dir,1); // se seguira moviendo el motor en la direccion inicial + mover(3,dir,0.4); // se seguira moviendo el motor en la direccion inicial dir=-1; // se cambia a direccion while (mp3==1) // Mientras el MP esté sin pulsar: { enc=enc3.getPulses(); // leemos el valor de los encoders - mover(3,dir,1); // movemos el motor + mover(3,dir,0.4); // movemos el motor wait(0.01); // esperamos 0.01s if(enc==enc3.getPulses()) // Si el contador no ha cambiado dir=1; // cambiamos la dirección @@ -189,12 +200,12 @@ while (dir==1) // Mientras que la dirección del motor sea 1: { while (mp4==0) // Mientras el MP esté pulsado - mover(4,dir,1); // movemos los motores 4 y 5 + mover(4,dir,0.4); // movemos los motores 4 y 5 dir=-1; while (mp4==1) // Mientras el MP esté sin pulsar: { enc=enc5.getPulses(); // leemos el valor del los encoders - mover(4,dir,1); // movemos los motores + mover(4,dir,0.4); // movemos los motores wait(0.01); // esperamos 0.01s if(enc==enc5.getPulses()) // Si el contador no ha cambiado dir=1; // cambiamos la dirección @@ -205,7 +216,7 @@ // posicionamiento de la rotacion de la muñeca while (mp5) // Mientras no se pulse el MS { - mover(5,1,1); // se mueven los motores 4 y 5 + mover(5,1,0.4); // se mueven los motores 4 y 5 wait(0.01); // esperamos 0.01s } frenar(5); // frenamos los motores @@ -220,7 +231,7 @@ led2=0; } -void home() +void posicion(int pos) { } @@ -264,7 +275,7 @@ void pinza(int a) { int enc=0, encOld=0; - mover(6,a,0.8); // movemos la pinza + mover(6,a,0.5); // movemos la pinza enc=enc6.getPulses(); // leemos la posicion del encoder do {