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@1:fccdc54f1314, 2020-12-04 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |