Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- 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);
}
}
+
+
+
+