juan carlos cortes parra / Mbed 2 deprecated Lab4rampadesaceleracion

Dependencies:   mbed TextLCD

Committer:
juankafil1
Date:
Fri Dec 04 12:31:29 2020 +0000
Revision:
1:fccdc54f1314
Parent:
0:888f499e0ce0
Child:
2:7ea6fb21e108
mensage;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
juankafil1 0:888f499e0ce0 1 #include "mbed.h"
juankafil1 0:888f499e0ce0 2 #include "string"
juankafil1 0:888f499e0ce0 3 #include "mbed.h"
juankafil1 0:888f499e0ce0 4 #include "sstream"
juankafil1 0:888f499e0ce0 5 #include <string>
juankafil1 0:888f499e0ce0 6 #include "TextLCD.h"
juankafil1 0:888f499e0ce0 7
juankafil1 0:888f499e0ce0 8 TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2);// Rs, E, d4, d5, d6, d7, RW=GND
juankafil1 0:888f499e0ce0 9 Serial pc(USBTX,USBRX);
juankafil1 0:888f499e0ce0 10 DigitalIn pulso(PTC5);
juankafil1 0:888f499e0ce0 11 DigitalOut right(PTC7);
juankafil1 0:888f499e0ce0 12 DigitalOut left(PTC0);
juankafil1 0:888f499e0ce0 13 DigitalIn start(PTC3),finish(PTC7);
juankafil1 0:888f499e0ce0 14 Timer Timer1;
juankafil1 1:fccdc54f1314 15 Ticker rampa;
juankafil1 1:fccdc54f1314 16 BusOut step_secuence(PTB0,PTB1,PTB2,PTB3);
juankafil1 0:888f499e0ce0 17 int rea,ns;
juankafil1 0:888f499e0ce0 18 string cadena;
juankafil1 0:888f499e0ce0 19 using namespace std;
juankafil1 0:888f499e0ce0 20 void velocidad(int a,float ad);
juankafil1 0:888f499e0ce0 21 int dist(char datos[5]);
juankafil1 0:888f499e0ce0 22 PwmOut l1(PTB3),l2(PTC2);
juankafil1 0:888f499e0ce0 23 int selec;
juankafil1 0:888f499e0ce0 24 float cambio;
juankafil1 0:888f499e0ce0 25 float rpm=0,auxrpm=0;
juankafil1 0:888f499e0ce0 26 int contador=0;
juankafil1 0:888f499e0ce0 27 int distancia=0,disa=0;
juankafil1 0:888f499e0ce0 28 int second=0;
juankafil1 0:888f499e0ce0 29 bool antirebote=false;
juankafil1 0:888f499e0ce0 30 int recorrido=0,rpm1=0;
juankafil1 0:888f499e0ce0 31 char cade;
juankafil1 1:fccdc54f1314 32 bool bit=false;
juankafil1 1:fccdc54f1314 33 int velram;
juankafil1 1:fccdc54f1314 34 float tiempoe=0;
juankafil1 0:888f499e0ce0 35 //using namespace boost;
juankafil1 0:888f499e0ce0 36 float h;
juankafil1 0:888f499e0ce0 37 void inicio(){
juankafil1 0:888f499e0ce0 38 while(1){
juankafil1 0:888f499e0ce0 39 if(start==0){
juankafil1 0:888f499e0ce0 40 break;
juankafil1 0:888f499e0ce0 41 }
juankafil1 1:fccdc54f1314 42 velocidad(2,0.05);
juankafil1 0:888f499e0ce0 43 }
juankafil1 0:888f499e0ce0 44 }
juankafil1 1:fccdc54f1314 45 void rampa1(){
juankafil1 1:fccdc54f1314 46 lcd.cls();
juankafil1 1:fccdc54f1314 47 lcd.locate(0,1);
juankafil1 1:fccdc54f1314 48 lcd.printf("millos");
juankafil1 1:fccdc54f1314 49 if(bit){
juankafil1 1:fccdc54f1314 50 velram=velram+1;
juankafil1 1:fccdc54f1314 51 if (velram >=20){
juankafil1 1:fccdc54f1314 52 velram=20;
juankafil1 1:fccdc54f1314 53 }
juankafil1 1:fccdc54f1314 54 } }
juankafil1 0:888f499e0ce0 55 int main(){
juankafil1 0:888f499e0ce0 56 velocidad(0,0);
juankafil1 0:888f499e0ce0 57 inicio();
juankafil1 0:888f499e0ce0 58 velocidad(0,0);
juankafil1 0:888f499e0ce0 59 lcd.printf("esta en los extremos");
juankafil1 0:888f499e0ce0 60 int red=0;
juankafil1 0:888f499e0ce0 61 char buffer[12],aux[4];
juankafil1 0:888f499e0ce0 62 while(1){
juankafil1 1:fccdc54f1314 63 if(second==0){
juankafil1 1:fccdc54f1314 64 rampa.attach(&rampa1,1*0.05);
juankafil1 1:fccdc54f1314 65 }else{
juankafil1 1:fccdc54f1314 66 rampa.attach(&rampa1,second*0.05);
juankafil1 1:fccdc54f1314 67 }
juankafil1 1:fccdc54f1314 68
juankafil1 0:888f499e0ce0 69
juankafil1 0:888f499e0ce0 70 if(pc.readable()){// captura string
juankafil1 0:888f499e0ce0 71
juankafil1 0:888f499e0ce0 72 pc.gets(buffer,12);
juankafil1 0:888f499e0ce0 73 buffer[0]=' ';
juankafil1 0:888f499e0ce0 74 cade=buffer[1];
juankafil1 1:fccdc54f1314 75 if (rpm1==0){
juankafil1 0:888f499e0ce0 76 aux[1]=buffer[1];
juankafil1 0:888f499e0ce0 77 aux[2]=buffer[2];
juankafil1 0:888f499e0ce0 78 aux[3]=buffer[3];
juankafil1 0:888f499e0ce0 79 second=dist(aux);
juankafil1 0:888f499e0ce0 80 aux[1]=buffer[4];
juankafil1 0:888f499e0ce0 81 aux[2]=buffer[5];
juankafil1 0:888f499e0ce0 82 aux[3]=buffer[6];
juankafil1 0:888f499e0ce0 83 rpm1=dist(aux);
juankafil1 0:888f499e0ce0 84 aux[1]=buffer[7];
juankafil1 0:888f499e0ce0 85 aux[2]=buffer[8];
juankafil1 0:888f499e0ce0 86 aux[3]=buffer[9];
juankafil1 0:888f499e0ce0 87 distancia=dist(aux);
juankafil1 1:fccdc54f1314 88
juankafil1 1:fccdc54f1314 89 }
juankafil1 1:fccdc54f1314 90 }
juankafil1 0:888f499e0ce0 91
juankafil1 1:fccdc54f1314 92 if(distancia>0){
juankafil1 1:fccdc54f1314 93 bit=true;
juankafil1 1:fccdc54f1314 94 velram=1;
juankafil1 1:fccdc54f1314 95 distancia=distancia*46;
juankafil1 0:888f499e0ce0 96 }
juankafil1 1:fccdc54f1314 97
juankafil1 0:888f499e0ce0 98 //pc.printf("%s",buffer);
juankafil1 0:888f499e0ce0 99 // dist(buffer);
juankafil1 0:888f499e0ce0 100 //pc.printf("%s",cadena);
juankafil1 0:888f499e0ce0 101 pc.printf("%d",recorrido);
juankafil1 1:fccdc54f1314 102
juankafil1 1:fccdc54f1314 103 if(( distancia>0)&&(contador<=distancia)){
juankafil1 1:fccdc54f1314 104 auxrpm=(60*20)/(rpm1*46*velram);
juankafil1 1:fccdc54f1314 105 velocidad(selec,auxrpm);
juankafil1 1:fccdc54f1314 106
juankafil1 1:fccdc54f1314 107 }if(contador==distancia){
juankafil1 1:fccdc54f1314 108 contador=0;
juankafil1 1:fccdc54f1314 109 distancia=0;
juankafil1 1:fccdc54f1314 110 second=0;
juankafil1 1:fccdc54f1314 111
juankafil1 1:fccdc54f1314 112 }
juankafil1 0:888f499e0ce0 113 if(cade=='d'){
juankafil1 0:888f499e0ce0 114 selec=1;
juankafil1 0:888f499e0ce0 115
juankafil1 0:888f499e0ce0 116 }
juankafil1 0:888f499e0ce0 117 if (cade=='i'){
juankafil1 0:888f499e0ce0 118 selec=2;
juankafil1 0:888f499e0ce0 119
juankafil1 0:888f499e0ce0 120
juankafil1 0:888f499e0ce0 121 }
juankafil1 0:888f499e0ce0 122 if(cade=='n'){selec=0;
juankafil1 0:888f499e0ce0 123 }
juankafil1 0:888f499e0ce0 124
juankafil1 1:fccdc54f1314 125 pc.printf("%d ,%d ,%d ",rpm1,distancia,second);
juankafil1 0:888f499e0ce0 126
juankafil1 0:888f499e0ce0 127
juankafil1 0:888f499e0ce0 128
juankafil1 0:888f499e0ce0 129 }
juankafil1 0:888f499e0ce0 130
juankafil1 0:888f499e0ce0 131 }
juankafil1 0:888f499e0ce0 132
juankafil1 0:888f499e0ce0 133 void velocidad(int a ,float ad){
juankafil1 0:888f499e0ce0 134 switch (a){
juankafil1 0:888f499e0ce0 135 case 0:
juankafil1 0:888f499e0ce0 136 lcd.cls();
juankafil1 0:888f499e0ce0 137 lcd.locate(0,0);
juankafil1 0:888f499e0ce0 138 lcd.printf("%d mm",distancia);
juankafil1 0:888f499e0ce0 139 lcd.locate(0,1);
juankafil1 0:888f499e0ce0 140 lcd.printf(" V :%.2f rpm",rpm);
juankafil1 0:888f499e0ce0 141 l1=0;
juankafil1 0:888f499e0ce0 142 l2=0;
juankafil1 0:888f499e0ce0 143
juankafil1 0:888f499e0ce0 144 break;
juankafil1 0:888f499e0ce0 145 case 1:
juankafil1 0:888f499e0ce0 146
juankafil1 1:fccdc54f1314 147 for( int P=1;P<=4;P++){
juankafil1 1:fccdc54f1314 148 contador=contador+1;
juankafil1 1:fccdc54f1314 149 switch (P) {
juankafil1 1:fccdc54f1314 150 case 0:
juankafil1 1:fccdc54f1314 151 step_secuence=0b01;
juankafil1 1:fccdc54f1314 152 break;
juankafil1 1:fccdc54f1314 153 case 1:
juankafil1 1:fccdc54f1314 154 step_secuence=0b10;
juankafil1 1:fccdc54f1314 155 break;
juankafil1 1:fccdc54f1314 156 case 2:
juankafil1 1:fccdc54f1314 157 step_secuence=0b100;
juankafil1 1:fccdc54f1314 158 break;
juankafil1 1:fccdc54f1314 159 case 3:
juankafil1 1:fccdc54f1314 160 step_secuence=0b1000;
juankafil1 1:fccdc54f1314 161 break;
juankafil1 1:fccdc54f1314 162
juankafil1 1:fccdc54f1314 163 }
juankafil1 1:fccdc54f1314 164 wait(ad);
juankafil1 1:fccdc54f1314 165 }
juankafil1 0:888f499e0ce0 166
juankafil1 0:888f499e0ce0 167 lcd.cls();
juankafil1 0:888f499e0ce0 168 lcd.locate(0,0);
juankafil1 0:888f499e0ce0 169 lcd.printf("%d mm",distancia);
juankafil1 0:888f499e0ce0 170 lcd.locate(0,1);
juankafil1 0:888f499e0ce0 171 lcd.printf(" V :%.2f rpm",rpm);
juankafil1 0:888f499e0ce0 172 l1.write(ad);
juankafil1 0:888f499e0ce0 173
juankafil1 0:888f499e0ce0 174 l2=0;
juankafil1 0:888f499e0ce0 175 break;
juankafil1 0:888f499e0ce0 176 case 2:
juankafil1 1:fccdc54f1314 177
juankafil1 1:fccdc54f1314 178 for( int b=4;b>=1;b--){
juankafil1 1:fccdc54f1314 179 contador=contador+1;
juankafil1 1:fccdc54f1314 180 switch (b) {
juankafil1 1:fccdc54f1314 181 case 0:
juankafil1 1:fccdc54f1314 182 step_secuence=0b01;
juankafil1 1:fccdc54f1314 183 break;
juankafil1 1:fccdc54f1314 184 case 1:
juankafil1 1:fccdc54f1314 185 step_secuence=0b10;
juankafil1 1:fccdc54f1314 186 break;
juankafil1 1:fccdc54f1314 187 case 2:
juankafil1 1:fccdc54f1314 188 step_secuence=0b100;
juankafil1 1:fccdc54f1314 189 break;
juankafil1 1:fccdc54f1314 190 case 3:
juankafil1 1:fccdc54f1314 191 step_secuence=0b1000;
juankafil1 1:fccdc54f1314 192 break;
juankafil1 1:fccdc54f1314 193
juankafil1 1:fccdc54f1314 194 }
juankafil1 1:fccdc54f1314 195 wait(ad);
juankafil1 1:fccdc54f1314 196 }
juankafil1 1:fccdc54f1314 197
juankafil1 0:888f499e0ce0 198 lcd.cls();
juankafil1 0:888f499e0ce0 199 lcd.locate(0,0);
juankafil1 0:888f499e0ce0 200 lcd.printf("%d mm",distancia);
juankafil1 0:888f499e0ce0 201 lcd.locate(0,1);
juankafil1 0:888f499e0ce0 202 lcd.printf("%.2f rpm",rpm);
juankafil1 0:888f499e0ce0 203
juankafil1 0:888f499e0ce0 204 l2.write(ad);
juankafil1 0:888f499e0ce0 205 l1=0;
juankafil1 0:888f499e0ce0 206 break;
juankafil1 0:888f499e0ce0 207
juankafil1 0:888f499e0ce0 208 }
juankafil1 0:888f499e0ce0 209
juankafil1 0:888f499e0ce0 210 }
juankafil1 0:888f499e0ce0 211
juankafil1 0:888f499e0ce0 212 int dist(char datos[4]){
juankafil1 0:888f499e0ce0 213 int numero=0,contador=0;
juankafil1 0:888f499e0ce0 214 char c=' ';
juankafil1 1:fccdc54f1314 215 for(int i = 4;i >= 0;i --){
juankafil1 0:888f499e0ce0 216 c=datos[i];
juankafil1 0:888f499e0ce0 217 //pc.putc(c);
juankafil1 0:888f499e0ce0 218 if(c=='0'){contador=contador+1; }
juankafil1 0:888f499e0ce0 219 if(c=='1'){
juankafil1 0:888f499e0ce0 220 contador=contador+1;
juankafil1 0:888f499e0ce0 221 if(contador==1){numero=numero+1;}
juankafil1 0:888f499e0ce0 222 if(contador==2){numero=numero+10;}
juankafil1 0:888f499e0ce0 223 if(contador==3){numero=numero+100;} }
juankafil1 0:888f499e0ce0 224 if(c=='2'){
juankafil1 0:888f499e0ce0 225 contador=contador+1;
juankafil1 0:888f499e0ce0 226 if(contador==1){numero=numero+2;}
juankafil1 0:888f499e0ce0 227 if(contador==2){numero=numero+20;}
juankafil1 0:888f499e0ce0 228 if(contador==3){numero=numero+200;} }
juankafil1 0:888f499e0ce0 229 if(c=='3'){
juankafil1 0:888f499e0ce0 230 contador=contador+1;
juankafil1 0:888f499e0ce0 231 if(contador==1){numero=numero+3;}
juankafil1 0:888f499e0ce0 232 if(contador==2){numero=numero+30;}
juankafil1 0:888f499e0ce0 233 if(contador==3){numero=numero+300;} }
juankafil1 0:888f499e0ce0 234 if(c=='4'){
juankafil1 0:888f499e0ce0 235 contador=contador+1;
juankafil1 0:888f499e0ce0 236 if(contador==1){numero=numero+4;}
juankafil1 0:888f499e0ce0 237 if(contador==2){numero=numero+40;}
juankafil1 0:888f499e0ce0 238 if(contador==3){numero=numero+400;} }
juankafil1 0:888f499e0ce0 239 if(c=='5'){
juankafil1 0:888f499e0ce0 240 contador=contador+1;
juankafil1 0:888f499e0ce0 241 if(contador==1){numero=numero+5;}
juankafil1 0:888f499e0ce0 242 if(contador==2){numero=numero+50;}
juankafil1 0:888f499e0ce0 243 if(contador==3){numero=numero+500;} }
juankafil1 0:888f499e0ce0 244 if(c=='6'){
juankafil1 0:888f499e0ce0 245 contador=contador+1;
juankafil1 0:888f499e0ce0 246 if(contador==1){numero=numero+6;}
juankafil1 0:888f499e0ce0 247 if(contador==2){numero=numero+60;}
juankafil1 0:888f499e0ce0 248 if(contador==3){numero=numero+600;} }
juankafil1 0:888f499e0ce0 249 if(c=='7'){
juankafil1 0:888f499e0ce0 250 contador=contador+1;
juankafil1 0:888f499e0ce0 251 if(contador==1){numero=numero+7;}
juankafil1 0:888f499e0ce0 252 if(contador==2){numero=numero+70;}
juankafil1 0:888f499e0ce0 253 if(contador==3){numero=numero+700;} }
juankafil1 0:888f499e0ce0 254 if(c=='8'){
juankafil1 0:888f499e0ce0 255 contador=contador+1;
juankafil1 0:888f499e0ce0 256 if(contador==1){numero=numero+8;}
juankafil1 0:888f499e0ce0 257 if(contador==2){numero=numero+80;}
juankafil1 0:888f499e0ce0 258 if(contador==3){numero=numero+800;} }
juankafil1 0:888f499e0ce0 259 if(c=='9'){
juankafil1 0:888f499e0ce0 260 contador=contador+1;
juankafil1 0:888f499e0ce0 261 if(contador==1){numero=numero+9;}
juankafil1 0:888f499e0ce0 262 if(contador==2){numero=numero+90;}
juankafil1 0:888f499e0ce0 263 if(contador==3){numero=numero+900;} }
juankafil1 0:888f499e0ce0 264
juankafil1 0:888f499e0ce0 265 }
juankafil1 0:888f499e0ce0 266 return numero;
juankafil1 0:888f499e0ce0 267 }