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.
main.cpp
- Committer:
- juankafil1
- Date:
- 2020-12-04
- Revision:
- 1:fccdc54f1314
- Parent:
- 0:888f499e0ce0
- Child:
- 2:7ea6fb21e108
File content as of revision 1:fccdc54f1314:
#include "mbed.h"
#include "string"
#include "mbed.h"
#include "sstream"
#include <string>
#include "TextLCD.h"
TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2);// Rs, E, d4, d5, d6, d7, RW=GND
Serial pc(USBTX,USBRX);
DigitalIn pulso(PTC5);
DigitalOut right(PTC7);
DigitalOut left(PTC0);
DigitalIn start(PTC3),finish(PTC7);
Timer Timer1;
Ticker rampa;
BusOut step_secuence(PTB0,PTB1,PTB2,PTB3);
int rea,ns;
string cadena;
using namespace std;
void velocidad(int a,float ad);
int dist(char datos[5]);
PwmOut l1(PTB3),l2(PTC2);
int selec;
float cambio;
float rpm=0,auxrpm=0;
int contador=0;
int distancia=0,disa=0;
int second=0;
bool antirebote=false;
int recorrido=0,rpm1=0;
char cade;
bool bit=false;
int velram;
float tiempoe=0;
//using namespace boost;
float h;
void inicio(){
while(1){
if(start==0){
break;
}
velocidad(2,0.05);
}
}
void rampa1(){
lcd.cls();
lcd.locate(0,1);
lcd.printf("millos");
if(bit){
velram=velram+1;
if (velram >=20){
velram=20;
}
} }
int main(){
velocidad(0,0);
inicio();
velocidad(0,0);
lcd.printf("esta en los extremos");
int red=0;
char buffer[12],aux[4];
while(1){
if(second==0){
rampa.attach(&rampa1,1*0.05);
}else{
rampa.attach(&rampa1,second*0.05);
}
if(pc.readable()){// captura string
pc.gets(buffer,12);
buffer[0]=' ';
cade=buffer[1];
if (rpm1==0){
aux[1]=buffer[1];
aux[2]=buffer[2];
aux[3]=buffer[3];
second=dist(aux);
aux[1]=buffer[4];
aux[2]=buffer[5];
aux[3]=buffer[6];
rpm1=dist(aux);
aux[1]=buffer[7];
aux[2]=buffer[8];
aux[3]=buffer[9];
distancia=dist(aux);
}
}
if(distancia>0){
bit=true;
velram=1;
distancia=distancia*46;
}
//pc.printf("%s",buffer);
// dist(buffer);
//pc.printf("%s",cadena);
pc.printf("%d",recorrido);
if(( distancia>0)&&(contador<=distancia)){
auxrpm=(60*20)/(rpm1*46*velram);
velocidad(selec,auxrpm);
}if(contador==distancia){
contador=0;
distancia=0;
second=0;
}
if(cade=='d'){
selec=1;
}
if (cade=='i'){
selec=2;
}
if(cade=='n'){selec=0;
}
pc.printf("%d ,%d ,%d ",rpm1,distancia,second);
}
}
void velocidad(int a ,float ad){
switch (a){
case 0:
lcd.cls();
lcd.locate(0,0);
lcd.printf("%d mm",distancia);
lcd.locate(0,1);
lcd.printf(" V :%.2f rpm",rpm);
l1=0;
l2=0;
break;
case 1:
for( int P=1;P<=4;P++){
contador=contador+1;
switch (P) {
case 0:
step_secuence=0b01;
break;
case 1:
step_secuence=0b10;
break;
case 2:
step_secuence=0b100;
break;
case 3:
step_secuence=0b1000;
break;
}
wait(ad);
}
lcd.cls();
lcd.locate(0,0);
lcd.printf("%d mm",distancia);
lcd.locate(0,1);
lcd.printf(" V :%.2f rpm",rpm);
l1.write(ad);
l2=0;
break;
case 2:
for( int b=4;b>=1;b--){
contador=contador+1;
switch (b) {
case 0:
step_secuence=0b01;
break;
case 1:
step_secuence=0b10;
break;
case 2:
step_secuence=0b100;
break;
case 3:
step_secuence=0b1000;
break;
}
wait(ad);
}
lcd.cls();
lcd.locate(0,0);
lcd.printf("%d mm",distancia);
lcd.locate(0,1);
lcd.printf("%.2f rpm",rpm);
l2.write(ad);
l1=0;
break;
}
}
int dist(char datos[4]){
int numero=0,contador=0;
char c=' ';
for(int i = 4;i >= 0;i --){
c=datos[i];
//pc.putc(c);
if(c=='0'){contador=contador+1; }
if(c=='1'){
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;} }
}
return numero;
}