abrayan

Dependencies:   mbed

Revision:
6:8d7f6fe73ed1
Parent:
2:3007b3c06d2c
--- a/main.cpp	Tue Sep 11 01:27:25 2018 +0000
+++ b/main.cpp	Sat Nov 10 22:41:02 2018 +0000
@@ -1,16 +1,45 @@
 #include "mbed.h"
 #include "main.h"
 
+ DigitalOut s0(PB_13);
+ DigitalOut s1(PB_14);
+ DigitalOut s2(PB_15);
+ DigitalOut s3(PB_1);
+ DigitalIn  out (PB_2);
+ 
+ DigitalOut LED(LED1);
+ InterruptIn pulse(PC_13);
+ float retardo = 0;
+
+    
+void ISR_Poff()
+
+    {
+    
+    retardo = (0.05);
+    
+    }  
+ 
+ 
+ 
+ Timer tiempo;
+ 
+ unsigned int lectura (void);
+ 
 Serial command(USBTX, USBRX);
 
 int main() {
     init_servo();
     init_serial();
+    pulse.fall (&ISR_Poff);
 
     debug_m("inicio \n");
     uint32_t read_cc;
     while(1)
     {
+        LED = !LED;
+        wait (retardo);
+        
         read_cc=read_command();
         
         switch (read_cc)
@@ -18,10 +47,21 @@
             case  0x01: moving();
                         break;
                         
+            case  0x02: movimiento();
+                        break;
+                        
+            case  0x03: sensor();
+                        break;
+                        
+            case  0x04: saludo();
+                        break;  
+                        
             default:    debug_m("error de comando.\n");
                         break ;      
         }
+        
     }
+    
 }
 
 
@@ -36,6 +76,7 @@
 }
 
 
+
 void init_serial()
 {
     command.baud(9600);    
@@ -44,14 +85,386 @@
 
 void moving()
 {
-    debug_m("se inicia el comado mover..\n");    
+    command.printf("se inicia el 1er comado mover servos..\n");    
     char nmotor=command.getc();
     char grados=command.getc();
     char endc=command.getc();
     mover_ser(nmotor,grados); 
-    debug_m("fin del comado guardar..\n");       
+    debug_m("Moviendo servos...\n");       
+}
+
+
+void movimiento()
+{
+    command.printf("se inicia el 2do comado mover patas..\n");   
+    char lado=command.getc();
+    char movi=command.getc();
+    char endc=command.getc();
+    
+    switch (lado)
+        {
+            case  0x01: switch (movi)                                           //Pata Derecha_delantera
+                        {
+                            case 0x01:  mover_ser(0x01,0x01);                  
+                                        command.printf("moviendo pata derecha delantera arriba..\n");
+                                        break;  
+                                    
+                            case 0x02:  mover_ser(0x01,0x2d);                   
+                                        command.printf("moviendo pata derecha delantera abajo..\n");                  
+                                        break; 
+                        
+                            case 0x03:  mover_ser(0x02,0x5a);                  
+                                        command.printf("moviendo pata izquierda delantera adelante..\n");
+                                        break; 
+                                    
+                            case 0x04:  mover_ser(0x02,0x0a);                  
+                                        command.printf("moviendo pata izquierda delantera atras..\n");
+                                        break; 
+                        }
+                        break;
+                        
+            case  0x02: switch (movi)                                           //Pata Derecha_trasera
+                        {
+                            case 0x01:  mover_ser(0x03,0x01);                   
+                                        command.printf("moviendo pata derecha trasera arriba..\n");
+                                        break;  
+                                    
+                            case 0x02:  mover_ser(0x03,0x2d); 
+                                        command.printf("moviendo pata derecha trasera abajo..\n");                  
+                                        break; 
+                                    
+                            case 0x03:  mover_ser(0x04,0xaa); 
+                                        command.printf("moviendo pata derecha trasera adelante..\n");                  
+                                        break; 
+                                    
+                            case 0x04:  mover_ser(0x04,0x5a); 
+                                        command.printf("moviendo pata derecha trasera atras..\n");                  
+                                        break;   
+                        }
+                        break;
+                        
+            case  0x03: switch (movi)                                           //Pata Izquierda_delantera
+                        {
+                            case 0x01:  mover_ser(0x05,0x01);                    
+                                        command.printf("moviendo pata izquierda delantera arriba..\n");
+                                        break;  
+                                    
+                            case 0x02:  mover_ser(0x05,0x2d);                   
+                                        command.printf("moviendo pata izquierda delantera abajo..\n");
+                                        break; 
+                        
+                            case 0x03:  mover_ser(0x06,0x5a);                   
+                                        command.printf("moviendo pata izquierda delantera adelante..\n");
+                                        break; 
+                                    
+                            case 0x04:  mover_ser(0x06,0xaa);                   
+                                        command.printf("moviendo pata izquierda delantera atras..\n");
+                                        break;   
+                        }
+                        break;
+                        
+            case  0x04: switch (movi)                                           //Pata Izquierda_trasera
+                        {
+                            case 0x01:  mover_ser(0x07,0x01);                   
+                                        command.printf("moviendo pata izquierda trasera arriba..\n");
+                                        break;  
+                                    
+                            case 0x02:  mover_ser(0x07,0x2d);                   
+                                        command.printf("moviendo pata izquierda trasera abajo..\n");
+                                        break; 
+                        
+                            case 0x03:  mover_ser(0x08,0x0a);                   
+                                        command.printf("moviendo pata izquierda trasera adelante..\n");
+                                        break; 
+                                    
+                            case 0x04:  mover_ser(0x08,0x5a);                   
+                                        command.printf("moviendo pata izquierda trasera atras..\n");
+                                        break;      
+                        }
+                        break;
+                        
+            default:    debug_m("error de comando.\n");
+                        break ;      
+        }
+    //debug_m("fin del comado guardar..\n");       
 }
 
+void sensor()
+{
+    command.printf ("se inicia el 3er comando sensor de color..\n");    
+    char leer=command.getc();
+    char endc=command.getc();
+
+    unsigned int ROJO=0;
+    unsigned int VERDE=0;       
+    unsigned int AZUL=0;
+    
+    if(leer==0x01)
+    {
+        s0=1;
+        s1=0;
+   
+        s2=0;
+        s3=0;
+        ROJO= lectura();
+        
+        s2=0;
+        s3=1;
+        AZUL= lectura();
+        
+        s2=1;
+        s3=1;
+        VERDE= lectura();
+        
+        if (ROJO<VERDE && VERDE>AZUL && AZUL>ROJO)
+        {
+            command.printf("Color detectado: ROJO \n");
+            command.printf("ADELANTE....\n");
+            
+                        for(int x=0;x<5;x++)
+                        {
+                        mover_ser(0x01,0x00);
+                        wait(0.1);
+                        mover_ser(0x02,0x32);
+                        wait(0.1);
+                        mover_ser(0x01,0x3c);
+                        wait(0.1);
+                        mover_ser(0x03,0x00);
+                        wait(0.1);
+                        mover_ser(0x04,0x5a);
+                        wait(0.1);
+                        mover_ser(0x03,0x3c);
+                        wait(0.1);
+                        mover_ser(0x02,0x5a);
+                        wait(0.1);
+                        mover_ser(0x04,0x82);
+                        wait(0.1);  
+                        mover_ser(0x05,0x00);
+                        wait(0.1);
+                        mover_ser(0x06,0x82);
+                        wait(0.1);
+                        mover_ser(0x05,0x3c);
+                        wait(0.1);
+                        mover_ser(0x07,0x00);
+                        wait(0.1);
+                        mover_ser(0x08,0x5a);
+                        wait(0.1);
+                        mover_ser(0x07,0x3c);
+                        wait(0.1);
+                        mover_ser(0x06,0x5a);
+                        wait(0.1);
+                        mover_ser(0x08,0x32);
+                        wait(0.1);  
+                        
+                        }     
+        } 
+        else
+        {
+            if (VERDE<AZUL && AZUL>ROJO && ROJO>VERDE)
+            {
+                command.printf("Color detectado: VERDE \n");
+                command.printf("ROTAR DERECHA\n");
+                        
+                        for(int x=0;x<5;x++)
+                        {
+                        mover_ser(0x01,0x00);
+                        wait(0.1);
+                        mover_ser(0x02,0x32);
+                        wait(0.1);
+                        mover_ser(0x01,0x3C);
+                        wait(0.1);
+                        mover_ser(0x03,0x00);
+                        wait(0.1);
+                        mover_ser(0x04,0x32);
+                        wait(0.1);
+                        mover_ser(0x03,0x3C);
+                        wait(0.1);
+                        mover_ser(0x07,0x00);
+                        wait(0.1);
+                        mover_ser(0x08,0x32);
+                        wait(0.1);
+                        mover_ser(0x07,0x3C);
+                        wait(0.1);
+                        mover_ser(0x05,0x00);
+                        wait(0.1);
+                        mover_ser(0x06,0x32);
+                        wait(0.1);
+                        mover_ser(0x05,0x3C);
+                        wait(0.1);
+                        mover_ser(0x02,0x5a);
+                        wait(0.1);
+                        mover_ser(0x04,0x5a);
+                        wait(0.1);
+                        mover_ser(0x06,0x5a);
+                        wait(0.1);
+                        mover_ser(0x08,0x5a);
+                        wait(0.1);
+                        }
+            } 
+            else
+            {
+                if (AZUL<ROJO && ROJO>VERDE && VERDE>AZUL)
+                {
+                    command.printf("Color detectado: AZUL \n");
+                    command.printf("ATRAS....\n");
+                    
+                    
+                    for(int x=0;x<5;x++)
+                        {
+                        mover_ser(0x01,0x00);
+                        wait(0.2);
+                        mover_ser(0x02,0x5a);
+                        wait(0.2);
+                        mover_ser(0x01,0x3c);
+                        wait(0.2);
+                        mover_ser(0x03,0x00);
+                        wait(0.2);
+                        mover_ser(0x04,0x82);
+                        wait(0.2);
+                        mover_ser(0x03,0x3c);
+                        wait(0.2);
+                        mover_ser(0x02,0x32);
+                        wait(0.2);
+                        mover_ser(0x04,0x5a);
+                        wait(0.2);  
+                        mover_ser(0x05,0x00);
+                        wait(0.2);
+                        mover_ser(0x06,0x5a);
+                        wait(0.2);
+                        mover_ser(0x05,0x3c);
+                        wait(0.2);
+                        mover_ser(0x07,0x00);
+                        wait(0.2);
+                        mover_ser(0x08,0x32);
+                        wait(0.2);
+                        mover_ser(0x07,0x3c);
+                        wait(0.2);
+                        mover_ser(0x06,0x82);
+                        wait(0.2);
+                        mover_ser(0x08,0x5a);
+                        wait(0.2);  
+                        
+                        }    
+                } 
+                else
+                {
+                    command.printf("otro color \n");
+                }
+            }
+        }
+        
+        wait(0.5);
+  } 
+}
+
+
+unsigned int lectura (void)
+{
+
+unsigned int inicio=0, final=0, resultado=0;
+    tiempo.start ();        
+    while (out) {}
+    while (!out) {}
+    while (out) {}
+    
+    inicio= tiempo.read_us();
+    while (!out) {}
+    final=tiempo.read_us();
+    resultado=(final-inicio);
+    tiempo.reset ();
+    return (resultado);
+    
+         
+}
+
+
+void saludo (void)
+{
+    char lado=command.getc();
+    switch (lado)
+    {
+        case  0x01:     command.printf("HOLA!!!!....\n");
+                        mover_ser(0x03,0x00);
+                        mover_ser(0x07,0x00);
+                        mover_ser(0x05,0x5a);
+                        wait(0.1);
+                        mover_ser(0x01,0x00);
+                        wait(0.4);
+                        mover_ser(0x02,0x5a);
+                        wait(0.4);  
+                        mover_ser(0x02,0x0a);
+                        wait(0.4); 
+                        mover_ser(0x02,0x5a);
+                        wait(0.4); 
+                        mover_ser(0x02,0x0a);     
+                        wait(0.4); 
+                        mover_ser(0x02,0x5a);
+                        wait(0.4);
+                        mover_ser(0x01,0x3c); 
+                        mover_ser(0x03,0x3c);
+                        mover_ser(0x07,0x3c);
+                        mover_ser(0x05,0x3c);
+                        wait(0.1);
+                        break;
+                        
+        case  0x02:     command.printf("EMOCIONADO!!!!....\n");
+                        mover_ser(0x01,0x00);
+                        mover_ser(0x03,0x00);
+                        mover_ser(0x05,0x00);
+                        mover_ser(0x07,0x00);
+                        wait(0.3);
+                        mover_ser(0x01,0x3c);
+                        mover_ser(0x03,0x3c);
+                        mover_ser(0x05,0x3c);
+                        mover_ser(0x07,0x3c);
+                        wait(0.3);
+                        mover_ser(0x01,0x00);
+                        mover_ser(0x03,0x00);
+                        mover_ser(0x05,0x00);
+                        mover_ser(0x07,0x00);
+                        wait(0.3);
+                        mover_ser(0x01,0x3c);
+                        mover_ser(0x03,0x3c);
+                        mover_ser(0x05,0x3c);
+                        mover_ser(0x07,0x3c);
+                        wait(0.3);
+                        break;
+                        
+            case  0x03: command.printf("''GIRANDO''!!!!....\n");
+                        mover_ser(0x01,0x00);
+                        wait(0.3);
+                        mover_ser(0x03,0x00);
+                        wait(0.3);
+                        mover_ser(0x07,0x00);
+                        wait(0.3);
+                        mover_ser(0x01,0x46);
+                        wait(0.3);
+                        mover_ser(0x05,0x00);
+                        wait(0.3);
+                        mover_ser(0x03,0x46);
+                        wait(0.3);
+                        mover_ser(0x01,0x00);
+                        wait(0.3);
+                        mover_ser(0x07,0x46);
+                        wait(0.3);
+                        mover_ser(0x03,0x00);
+                        wait(0.3);
+                        mover_ser(0x05,0x46);
+                        mover_ser(0x01,0x46);
+                        mover_ser(0x03,0x46);
+                        mover_ser(0x07,0x46);
+                        wait(0.3);
+                        break;
+                        
+                        
+        default:    command.printf("error de comando.\n");
+                    break ;      
+        }
+    
+    
+}
+
+
 void debug_m(char *s , ... ){
     #if DEBUG
     command.printf(s);