dsbnajdnas

Dependencies:   Adafruit_GFX SSD1306_128x64_I2C mbed

Revision:
1:748bf113818b
Parent:
0:07389ebe002b
diff -r 07389ebe002b -r 748bf113818b main.cpp
--- a/main.cpp	Sun Nov 19 22:00:22 2017 +0000
+++ b/main.cpp	Wed Nov 29 02:15:51 2017 +0000
@@ -13,9 +13,10 @@
 
  Timer Timer1;
  InterruptIn int1(PTD0);
- 
-unsigned int  contador=0,frec=0,conn=0,conm=0,cona=0, conN=0;
-
+ BusOut step_secuence( PTD6,  PTA17,  PTA16 ,PTC17);
+unsigned int  contador=0,frec=0,conn=0,conm=0,cona=0,conN=0,aux=0;
+uint16_t color=0,A=0,V=0,N=0,D=0,k=0;
+int g=0,grados=0;
 void ISR_PTD0(){//cuenta los  pulsos
     ++contador;}
     
@@ -28,38 +29,162 @@
     frec=100*contador;//lo multiplicamos  por 100
     Timer1.reset();}//reinicia  el timer 
     
+ 
+  void forward() // Avance motor
+{
+
+    k=0;
+    for (int i = 0; i<=4; i++) {//avance asi delante
+        if (k>=4) {
+            k=0;
+        }
+        switch (k) {
+            case 0:
+                step_secuence=0x0A;
+                break;
+            case 1:
+                step_secuence=0x09;
+                 g=g+2;
+                 grados=(g/2)*15;
+                break;
+            case 2:
+                step_secuence=0x05;
+                break;
+            case 3:
+                step_secuence=0x06;
+                break;
+        }
+        ++k;
+        wait(0.2);
+   
+    }
+   }
+  void retro()   // Retroceso motor
+{
+    k=3;
+    for (int i = 0; i<=3; i++) {
+        if (k<=0) {
+            k=3;
+        }
+        switch (k) {
+             case 0:
+                step_secuence=0x0A;
+                break;
+            case 1:
+                step_secuence=0x09;
+                 g=g+2;
+                 grados=(g/2)*15;
+                break;
+            case 2:
+                step_secuence=0x05;
+                break;
+            case 3:
+                step_secuence=0x06;
+                break;
+        }
+        wait(0.2);
+        --k;
+    }
+}
+
+void motor() {
+   if(color==1){
+      if(N==1){
+         while(aux<=2){
+          forward();
+          N=0;//ponemos la posicion anterior en 0
+          aux=aux+1;//variable para el  while   
+             }
+              aux=0; }
+        else if(V==1){
+          while(aux<=4){
+          forward();
+          V=0;//ponemos la posicion anterior en 0
+          aux=aux+1;//variable para el  while   
+             }
+              aux=0; }
+     else if(A==1){
+         while(aux<=2){
+          retro();
+          A=0;//ponemos la posicion anterior en 0
+           aux=aux+1;//variable para el  while   
+           }  aux=0; 
+        
+                
+       } else {
+        rs232.printf("lea");  
+             }       
+             
+  }
+  /*/case 2:]]
+     if(D==1){
+         while(aux<=2){
+          retro();
+          D=0;//ponemos la posicion anterior en 0
+          aux=aux+1;//variable para el  while   
+             }
+              aux=0; }
+        else if(V==1){
+          while(aux<=2){
+          forward();
+          V=0;//ponemos la posicion anterior en 0
+          aux=aux+1;//variable para el  while   
+             }
+              aux=0; }
+     else if(A==1){
+         while(aux<=2){
+          forward();
+          A=0;//ponemos la posicion anterior en 0
+          aux=aux+1;//variable para el  while   
+          }  aux=0; 
+        
+                
+      } if (N==1){
+        rs232.printf("lea");  
+             }       
+    }} //case 3:
+     //case 4:*/}
  void  contadores(){
-    if((frec>=10000)&&(frec<=22000)){
+    if((frec>=3000)&&(frec<=6000)){
            //lcd.locate(0,0);
+           
             oled.writeString(1, 0,"          ");
             oled.writeString(1, 0,"negro");
             conn=conn+1;//aumento  el  contador 
-              
+            color=2;
+            N=1;
+            motor();
             rs232.printf("N");//lcd.locate(0,1);//preparado para  pubicar
-            //oled.writeString(0, 1,"I=%d",conn);//publico
+            //oled.writeString(0, 1,"I=%d",conn);//public
             wait(3);//retraso mientras  pasa  la caja 
             
            //   oled.writeString(1, 0,"          ");//borrar oled
             
             }
-    else if((frec>=28000)&&(frec<=66000)){
+    else if((frec>=8300)&&(frec<=14000)){
               // lcd.locate(0,0);
-              
+           
             oled.writeString(1, 0,"          ");//bo//borrar oledrrar oled
             oled.writeString(1, 0,"VIOLETA");//publico  el color de la  frecuencia
             conm=conm+1;//aumento  el  contador 
-              rs232.printf("");
+            rs232.printf("V");
             //lcd.locate(0,1);//preparado para  pubicar
-            //oled.writeString(0, 1,"I=%d");//publico
+            
+          //  color=3;
+            //V=1;
+           //oled.writeString(0, 1,"I=%d");//publico
             wait(3);//retraso mientras  pasa  la caja   
                  
-             oled.writeString(1, 0,"          ");//borrar oled
+             //oled.writeString(1, 0,"          ");//borrar oled
     
-    }else if((frec>=45000)&&(frec<=110000)){
+    }else if((frec>=17000)&&(frec<=25000)){
            //lcd.locate(0,0);
             oled.writeString(1, 0,"          ");
             oled.writeString(1, 0,"Azul");
             cona=cona+1;//aumento  el  contador 
+            color=4;
+            A=1;
+            
             wait(3);
               
             rs232.printf("A");}
@@ -68,30 +193,38 @@
     
         oled.writeString(2, 1, "Caja no reconocida");
         conN=conN+1;
-        wait(3);
-            
+        
+        color=1;  
+        rs232.printf("D"); 
+        color=1;
+        D=1;
+         motor(); 
+         wait(3);
           }     
-        }
+        }    
+
         
 int main(){//clase  principal 
       
         rs232.baud(9600);
         int1.mode(PullUp);//habilitamos resistencia de PullUp
         int1.rise(&ISR_PTD0);//si hay  flanco  de  subida se va a el programa, habilita la interrupcion  
-        //lcd.locate(0,0);
+        D=1;
         oled.writeString(1, 0," maquna On"); //mensaje inicial al encender la Oled
         wait(1);
         
      while(true){
         frecuencia();//inicia  el sub programa  frecuenia
-        contadores();//inicia el programa de los contadores y publicacion de la frecuencia
+        contadores();
+       //inicia el programa de los contadores y publicacion de la frecuencia
     ///rs232.printf("F=%d\n\r",frec);
      //lcd.locate(0,1);
     ///rs232.printf("F=%d hz\r",frec);
     //lcd.printf("juan");// publica  el  valor frec donde  quiera 
     //wait(0.5);///retraso de para  publicar  
-            }   
-        }
+         }
+         }      
+        
 
 
 /*int main() {