control movimiento motor con interfaz

Dependencies:   mbed TextLCD

Committer:
juankafil1
Date:
Sun Nov 22 23:40:35 2020 +0000
Revision:
2:64a863ae5850
Parent:
1:98ce9ed49158
po

Who changed what in which revision?

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