Frank Girald / Mbed 2 deprecated Stepper_serialTX

Dependencies:   mbed

Revision:
1:d1b359ae4723
Parent:
0:c2aa9ba9a990
Child:
2:79a9ae9ae772
diff -r c2aa9ba9a990 -r d1b359ae4723 main.cpp
--- a/main.cpp	Wed Nov 08 17:31:09 2017 +0000
+++ b/main.cpp	Wed Nov 08 22:24:52 2017 +0000
@@ -1,8 +1,14 @@
 #include "mbed.h"
 
 Serial rs232(USBTX, USBRX); //enable serial port which links to USB
+Timer Timer1;
+DigitalOut led1(LED1);
+InterruptIn int1(PTD0);
 
-int num_pasos,grados,i,g,k,step;
+unsigned int contador = 0, frec = 0, cont_color1, cont_color2, cont_color3;
+bool flag_color1, flag_color2, flag_color3;
+
+int num_pasos,grados,i,g,k,step,desplazam,origen, destino;
 BusOut step_secuence(PTD4,PTA12,PTA4,PTA5);
 
 void forward(int cont_pasos) // Avance motor
@@ -29,7 +35,7 @@
         if (k>=4) {
             k=0;
         }
-        wait(0.2);
+        wait(0.1);
     }
     g=g+8;
     grados=(g/num_pasos)*15;
@@ -37,7 +43,22 @@
         g=0;
         grados=0;
     }
-        rs232.printf("%d\r\n",grados); //Visualiza avance cada 15°
+    rs232.printf("%d\r\n",grados); //Visualiza avance cada 15°
+}
+
+void ISR_PTD0()
+{
+    ++contador;
+}
+
+void frecuencia()
+{
+    contador=0;
+    Timer1.start();
+    while(Timer1.read_ms()<=10);
+    Timer1.stop();
+    frec=100*(contador);
+    Timer1.reset();
 }
 
 int main()
@@ -46,11 +67,135 @@
     g=0;
     num_pasos=8; // 1.8° por paso son 8.3333 pasos para avanzar 15°, se aproxima a 8
     grados=0;
-
-    while(1) {
-        forward(num_pasos);
+    origen=1;
+    int1.mode(PullUp);
+    int1.rise(&ISR_PTD0);
+    while(true) {
+        frecuencia();
+        rs232.printf("f=%d Hz\r\n",frec);
+        if(frec>=10000 && frec<=15000) {
+            rs232.printf("f=%d Hz\r\n",frec);
+            if(flag_color1==0) {
+                ++cont_color1;
+                rs232.printf("Rosado");
+                if(destino>origen) {
+                    desplazam=destino-origen;
+                    switch(desplazam) {
+                        case 1:
+                            forward(48);
+                            break;
+                        case 2:
+                            forward(96);
+                            break;
+                        case 3:
+                            forward(144);
+                            break;
+                    }
+                }
+                if(destino<origen) {
+                    desplazam=origen-destino;
+                    switch(desplazam) {
+                        case 1:
+                            forward(144);
+                            break;
+                        case 2:
+                            forward(96);
+                            break;
+                        case 3:
+                            forward(48);
+                            break;
+                    }
+                }
+                origen=destino;
+            }
+            flag_color1=1;
+        } else {
+            flag_color1=0;
+        }
+        if(frec>=20000 && frec<=25000) {
+            rs232.printf("f=%d Hz\r\n",frec);
+            if(flag_color1==0) {
+                ++cont_color2;
+                rs232.printf("Dorado");
+                if(destino>origen) {
+                    desplazam=destino-origen;
+                    switch(desplazam) {
+                        case 1:
+                            forward(48);
+                            break;
+                        case 2:
+                            forward(96);
+                            break;
+                        case 3:
+                            forward(144);
+                            break;
+                    }
+                }
+                if(destino<origen) {
+                    desplazam=origen-destino;
+                    switch(desplazam) {
+                        case 1:
+                            forward(144);
+                            break;
+                        case 2:
+                            forward(96);
+                            break;
+                        case 3:
+                            forward(48);
+                            break;
+                    }
+                }
+                origen=destino;
+            }
+            flag_color2=1;
+        } else {
+            flag_color2=0;
+        }
+        if(frec>=30000 && frec<=35000) {
+            rs232.printf("f=%d Hz\r\n",frec);
+            if(flag_color1==0) {
+                ++cont_color3;
+                rs232.printf("Fucsia");
+                if(destino>origen) {
+                    desplazam=destino-origen;
+                    switch(desplazam) {
+                        case 1:
+                            forward(48);
+                            break;
+                        case 2:
+                            forward(96);
+                            break;
+                        case 3:
+                            forward(144);
+                            break;
+                    }
+                }
+                if(destino<origen) {
+                    desplazam=origen-destino;
+                    switch(desplazam) {
+                        case 1:
+                            forward(144);
+                            break;
+                        case 2:
+                            forward(96);
+                            break;
+                        case 3:
+                            forward(48);
+                            break;
+                    }
+                }
+                origen=destino;
+            }
+            flag_color3=1;
+        } else {
+            flag_color3=0;
+        }
         wait(0.5);
     }
 }
 
 
+
+
+
+