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.

Dependencies:   Motor QEI mbed

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
     {