Programa mbed
Dependencies: mbed TextLCD MMA8451Q
Revision 0:2968705eeb36, committed 2020-11-23
- Comitter:
- poresc
- Date:
- Mon Nov 23 23:48:59 2020 +0000
- Commit message:
- m
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Mon Nov 23 23:48:59 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/emilmont/code/MMA8451Q/#c4d879a39775
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Mon Nov 23 23:48:59 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Nov 23 23:48:59 2020 +0000
@@ -0,0 +1,263 @@
+#include "mbed.h"
+#include "string"
+#include "TextLCD.h"
+Serial pc(USBTX,USBRX);
+
+TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2);
+DigitalOut negro(PTB0);
+DigitalOut naranja(PTB1);
+DigitalOut cafe(PTB2);
+DigitalOut amarillo(PTB3);
+DigitalIn pulso(PTC1);
+void velocidad(int a,float ad);
+double temp=0;
+int numero_pasos=0;
+int k=0;
+string cadena;
+int selec;
+char sentido;
+int recorrido=0;
+char tiempo;
+bool antirebote=false;
+Timer Timer1;
+float rpm=0,auxrpm=0;
+int r=0;
+int dist(char datos[5]);
+
+
+int main(){
+ char buffer[5];
+ int red=0;
+ while(1){
+ if((pulso==0)&&(antirebote==false)){
+ // contador++;
+ //disa++;
+ antirebote=true;
+ auxrpm=Timer1.read_ms();
+ Timer1.stop();
+ Timer1.reset();
+ // rpm=10000/auxrpm;
+
+ if(recorrido>0){
+ Timer1.start();}
+ }
+ if((pulso==1)&&(antirebote==true)){
+ antirebote=false;
+ }
+
+
+ if(pc.readable()){// captura string
+
+ pc.gets(buffer,8);
+ buffer[0]=' ';
+ //pc.printf("%s",buffer);
+ sentido=buffer[1];
+
+ // lcd.printf("%d",temp);
+ }
+ red=dist(buffer);
+ if(red!=0){
+
+ red=dist(buffer);
+ temp=red*0.01;
+ /* lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("%d",red);
+ lcd.locate(0,1);
+ lcd.printf("%.3f",temp);*/
+
+ }
+
+
+/*if(tiempo=='1'){
+ temp=0.001;}*/
+ if(sentido=='d'){
+
+ //lcd.printf("esta en los extremos");
+ selec=1;
+ //pc.printf(" derecha");
+for(int i=0; i<=600;i++){
+ if(k>4){
+ r=r+1;
+ k=0;
+ }
+ if(r==11){
+ rpm=(r*(1/temp)*60)/1000;
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("%.3f",rpm);
+ r=0;}
+ k=k+1;
+ switch(k){
+ case 1:
+ amarillo=1;
+ negro=0;
+ //wait(0.2);
+ break;
+ case 2:
+ cafe=1;
+ amarillo=0;
+ //wait(0.2);
+ break;
+ case 3:
+ naranja=1;
+ cafe=0;
+ // wait(0.2);
+ break;
+ case 4:
+ negro=1;
+ naranja=0;
+ // wait(0.2);
+ break;
+ }
+ wait(temp);
+
+
+
+ }
+
+ //rpm=0;
+ // red=0;
+ }
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("esperando");
+ pc.printf("esperando ");
+
+ if(sentido=='i'){
+ selec=2;
+ //pc.printf(" izquierda");
+for(int i=0; i<=600;i++){
+ if(k>4){
+ k=0;
+ r=r+1;
+ }
+ if(r==11){
+ rpm=(r*(1/temp)*60)/1000;
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("%.3f",rpm);
+ pc.printf("%.1f",rpm);
+ r=0;}
+ k=k+1;
+ switch(k){
+ case 1:
+ negro=1;
+ amarillo=0;
+ //wait(0.2);
+ break;
+ case 2:
+ naranja=1;
+ negro=0;
+ //wait(0.2);
+ break;
+ case 3:
+ cafe=1;
+ naranja=0;
+ // wait(0.2);
+ break;
+ case 4:
+ amarillo=1;
+ cafe=0;
+ // wait(0.2);
+ break;
+ }
+ wait(temp);
+
+
+
+ }
+
+ // rpm=0;
+ // red=0;
+ }
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("esperando");
+ pc.printf(" esperando");
+
+
+ if(sentido=='n'){
+ /* cafe=0;
+ amarillo=0;
+ negro=0;
+ naranja=0;
+ selec=0;*/
+ // pc.printf(" sin sentido");
+ }
+ // wait(0.5);
+
+
+
+}
+}
+
+int dist(char datos[8]){
+ int numero=0,contador=0;
+ char c=' ';
+ for(int i = 8;i >= 0;i --){
+ c=datos[i];
+ //pc.putc(c);
+ if(c=='0'){contador=contador+1; }
+ if(c=='1'){
+ // pc.printf("uno");
+ contador=contador+1;
+ if(contador==1){numero=numero+1;}}
+ /* if(contador==2){numero=numero+10;}
+ if(contador==3){numero=numero+100;} }*/
+ if(c=='2'){
+ contador=contador+1;
+ if(contador==1){numero=numero+2;}}
+ /* if(contador==2){numero=numero+20;}
+ if(contador==3){numero=numero+200;} }*/
+ if(c=='3'){
+ contador=contador+1;
+ if(contador==1){numero=numero+3;}}
+ /*if(contador==2){numero=numero+30;}
+ if(contador==3){numero=numero+300;} }*/
+ if(c=='4'){
+ contador=contador+1;
+ if(contador==1){numero=numero+4;}}
+ /* if(contador==2){numero=numero+40;}
+ if(contador==3){numero=numero+400;} }*/
+ if(c=='5'){
+ contador=contador+1;
+ if(contador==1){numero=numero+5;}}
+ /* if(contador==2){numero=numero+50;}
+ if(contador==3){numero=numero+500;} }*/
+ if(c=='6'){
+ contador=contador+1;
+ if(contador==1){numero=numero+6;}}
+ /* if(contador==2){numero=numero+60;}
+ if(contador==3){numero=numero+600;} }*/
+ if(c=='7'){
+ contador=contador+1;
+ if(contador==1){numero=numero+7;}}
+ /*if(contador==2){numero=numero+70;}
+ if(contador==3){numero=numero+700;} }*/
+ if(c=='8'){
+ contador=contador+1;
+ if(contador==1){numero=numero+8;}}
+ /* if(contador==2){numero=numero+80;}
+ if(contador==3){numero=numero+800;} }*/
+ if(c=='9'){
+ contador=contador+1;
+ if(contador==1){numero=numero+9;}}
+ /* if(contador==2){numero=numero+90;}
+ if(contador==3){numero=numero+900;} }*/
+
+ }
+
+
+
+
+ // lcd.printf("%d",numero);
+
+ return numero;
+
+
+
+
+
+
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Nov 23 23:48:59 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file