Alejandro Marin / Mbed 2 deprecated Tarea2Procesadores
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 
00004 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
00005 int i,Sp=0,Kp,Ki,Kd,j;
00006 DigitalOut l1(LED1);
00007 DigitalOut l2(LED2);
00008 int main()
00009 {
00010 
00011     DigitalIn button1(PTC12);
00012     DigitalIn button2(PTC13);
00013     DigitalIn button3(PTC16);
00014     lcd.writeCommand(0x0E);
00015     lcd.printf("Sp=     Kp=");
00016     lcd.locate(0,1);
00017     lcd.printf("Ki=     Kd=");
00018     lcd.locate(2,0);
00019     lcd.printf("=");
00020 
00021     while(1) {
00022 
00023         if (!button1) {
00024             switch(i) {
00025                 case 0:
00026                     wait(0.5);
00027                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00028                     while(!button1) {
00029                         if((j>=1) &&(j<6)) {
00030                             j++;
00031                             Sp+=1;
00032                         }
00033                         if((j>=6)&&(j<11)&&(Sp<9999)) {
00034                             j++;
00035                             Sp+=10;
00036                         }
00037                         if((j>=11)&&(j<16)&&(Sp<9999)) {
00038                             j++;
00039                             Sp+=100;
00040                         }
00041                         if((j>=16)&&(Sp<9999)) {
00042                             j++;
00043                             Sp+=500;
00044                         }
00045                         if(Sp>9999)
00046                             Sp=9999;
00047                         lcd.locate(2,0);
00048                         lcd.printf("=     ");
00049                         lcd.locate(3,0);
00050                         lcd.printf("%d",Sp);
00051                         wait(1);
00052                     }
00053                     if(j==1)
00054                         ++Sp;
00055                     if(Sp>9999)
00056                         Sp=9999;
00057                     lcd.locate(2,0);
00058                     lcd.printf("=     ");
00059                     lcd.locate(3,0);
00060                     lcd.printf("%d",Sp);
00061                     break;
00062                 case 1:
00063                     wait(0.5);
00064                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00065                     while(!button1) {
00066                         if((j>=1) &&(j<6)) {
00067                             j++;
00068                             Kp+=1;
00069                         }
00070                         if((j>=6)&&(j<11)&&(Kp<9999)) {
00071                             j++;
00072                             Kp+=10;
00073                         }
00074                         if((j>=11)&&(j<16)&&(Kp<9999)) {
00075                             j++;
00076                             Kp+=100;
00077                         }
00078                         if((j>=16)&&(Kp<9999)) {
00079                             j++;
00080                             Kp+=500;
00081                         }
00082                         if(Kp>9999)
00083                             Kp=9999;
00084                         lcd.locate(10,0);
00085                         lcd.printf("=     ");
00086                         lcd.locate(11,0);
00087                         lcd.printf("%d",Kp);
00088                         wait(1);
00089                     }
00090                     if(j==1)
00091                         ++Kp;
00092                     if(Kp>9999)
00093                         Kp=9999;
00094                     lcd.locate(10,0);
00095                     lcd.printf("=     ");
00096                     lcd.locate(11,0);
00097                     lcd.printf("%d",Kp);
00098                     break;
00099                 case 2:
00100                     wait(0.5);
00101                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00102                     while(!button1) {
00103                         if((j>=1) &&(j<6)) {
00104                             j++;
00105                             Ki+=1;
00106                         }
00107                         if((j>=6)&&(j<11)&&(Ki<9999)) {
00108                             j++;
00109                             Ki+=10;
00110                         }
00111                         if((j>=11)&&(j<16)&&(Ki<9999)) {
00112                             j++;
00113                             Ki+=100;
00114                         }
00115                         if((j>=16)&&(Ki<9999)) {
00116                             j++;
00117                             Ki+=500;
00118                         }
00119                         if(Ki>9999)
00120                             Ki=9999;
00121                         lcd.locate(2,1);
00122                         lcd.printf("=     ");
00123                         lcd.locate(3,1);
00124                         lcd.printf("%d",Ki);
00125                         wait(1);
00126                     }
00127                     if(j==1)
00128                         ++Ki;
00129                     if(Ki>9999)
00130                         Ki=9999;
00131                     lcd.locate(2,1);
00132                     lcd.printf("=     ");
00133                     lcd.locate(3,1);
00134                     lcd.printf("%d",Ki);
00135                     break;
00136                 case 3:
00137                     wait(0.5);
00138                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00139                     while(!button1) {
00140                         if((j>=1) &&(j<6)) {
00141                             j++;
00142                             Kd+=1;
00143                         }
00144                         if((j>=6)&&(j<11)&&(Kd<9999)) {
00145                             j++;
00146                             Kd+=10;
00147                         }
00148                         if((j>=11)&&(j<16)&&(Kd<9999)) {
00149                             j++;
00150                             Kd+=100;
00151                         }
00152                         if((j>=16)&&(Kd<9999)) {
00153                             j++;
00154                             Kd+=500;
00155                         }
00156                         if(Kd>9999)
00157                             Kd=9999;
00158                         lcd.locate(10,1);
00159                         lcd.printf("=     ");
00160                         lcd.locate(11,1);
00161                         lcd.printf("%d",Kd);
00162                         wait(1);
00163                     }
00164                     if(j==1)
00165                         ++Kd;
00166                     if(Kd>9999)
00167                         Kd=9999;
00168                     lcd.locate(10,1);
00169                     lcd.printf("=     ");
00170                     lcd.locate(11,1);
00171                     lcd.printf("%d",Kd);
00172                     break;
00173             }
00174         }
00175         j=0;
00176         if (!button2) {
00177             switch(i) {
00178                 case 0:
00179                     wait(0.5);
00180                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00181                     while(!button2) {
00182                         if((j>=1) &&(j<6)) {
00183                             j++;
00184                             Sp-=1;
00185                         }
00186                         if((j>=6)&&(j<11)&&(Sp>0)) {
00187                             j++;
00188                             Sp-=10;
00189                         }
00190                         if((j>=11)&&(j<16)&&(Sp>0)) {
00191                             j++;
00192                             Sp-=100;
00193                         }
00194                         if((j>=16)&&(Sp>0)) {
00195                             j++;
00196                             Sp-=500;
00197                         }
00198                         if(Sp<0)
00199                             Sp=0;
00200                         lcd.locate(2,0);
00201                         lcd.printf("=     ");
00202                         lcd.locate(3,0);
00203                         lcd.printf("%d",Sp);
00204                         wait(1);
00205                     }
00206                     if(j==1)
00207                         --Sp;
00208                     if(Sp<0)
00209                         Sp=0;
00210                     lcd.locate(2,0);
00211                     lcd.printf("=     ");
00212                     lcd.locate(3,0);
00213                     lcd.printf("%d",Sp);
00214                     break;
00215                 case 1:
00216                     wait(0.5);
00217                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00218                     while(!button2) {
00219                         if((j>=1) &&(j<6)) {
00220                             j++;
00221                             Kp-=1;
00222                         }
00223                         if((j>=6)&&(j<11)&&(Kp>0)) {
00224                             j++;
00225                             Kp-=10;
00226                         }
00227                         if((j>=11)&&(j<16)&&(Kp>0)) {
00228                             j++;
00229                             Kp-=100;
00230                         }
00231                         if((j>=16)&&(Kp>0)) {
00232                             j++;
00233                             Kp-=500;
00234                         }
00235                         if(Kp<0)
00236                             Kp=0;
00237                         lcd.locate(10,0);
00238                         lcd.printf("=     ");
00239                         lcd.locate(11,0);
00240                         lcd.printf("%d",Kp);
00241                         wait(1);
00242                     }
00243                     if(j==1)
00244                         --Kp;
00245                     if(Kp<0)
00246                         Kp=0;
00247                     lcd.locate(10,0);
00248                     lcd.printf("=     ");
00249                     lcd.locate(11,0);
00250                     lcd.printf("%d",Kp);
00251                     break;
00252                 case 2:
00253                     wait(0.5);
00254                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00255                     while(!button2) {
00256                         if((j>=1) &&(j<6)) {
00257                             j++;
00258                             Ki-=1;
00259                         }
00260                         if((j>=6)&&(j<11)&&(Ki>0)) {
00261                             j++;
00262                             Ki-=10;
00263                         }
00264                         if((j>=11)&&(j<16)&&(Ki>0)) {
00265                             j++;
00266                             Ki-=100;
00267                         }
00268                         if((j>=16)&&(Ki>0)) {
00269                             j++;
00270                             Ki-=500;
00271                         }
00272                         if(Ki<0)
00273                             Ki=0;
00274                         lcd.locate(2,1);
00275                         lcd.printf("=     ");
00276                         lcd.locate(3,1);
00277                         lcd.printf("%d",Ki);
00278                         wait(1);
00279                     }
00280                     if(j==1)
00281                         --Ki;
00282                     if(Ki<0)
00283                         Ki=0;
00284                     lcd.locate(2,1);
00285                     lcd.printf("=     ");
00286                     lcd.locate(3,1);
00287                     lcd.printf("%d",Ki);
00288                     break;
00289                 case 3:
00290                     wait(0.5);
00291                     j++;                                 // <-----ANTIREBOTE AQUI!!!
00292                     while(!button1) {
00293                         if((j>=1) &&(j<6)) {
00294                             j++;
00295                             Kd-=1;
00296                         }
00297                         if((j>=6)&&(j<11)&&(Kd>0)) {
00298                             j++;
00299                             Kd-=10;
00300                         }
00301                         if((j>=11)&&(j<16)&&(Kd>0)) {
00302                             j++;
00303                             Kd-=100;
00304                         }
00305                         if((j>=16)&&(Kd>0)) {
00306                             j++;
00307                             Kd-=500;
00308                         }
00309                         if(Kd>0)
00310                             Kd=0;
00311                         lcd.locate(10,1);
00312                         lcd.printf("=     ");
00313                         lcd.locate(11,1);
00314                         lcd.printf("%d",Kd);
00315                         wait(1);
00316                     }
00317                     if(j==1)
00318                         ++Kd;
00319                     if(Kd>0)
00320                         Kd=0;
00321                     lcd.locate(10,1);
00322                     lcd.printf("=     ");
00323                     lcd.locate(11,1);
00324                     lcd.printf("%d",Kd);
00325                     break;
00326             }
00327         }
00328         j=0;
00329         if(!button3) {
00330             wait(0.5);                  // <-----ANTIREBOTE AQUI!!!
00331             while(!button1);
00332             i++;
00333             if(i>3)
00334                 i=0;
00335             switch (i) {
00336                 case 0:
00337                     lcd.locate(2,0);
00338                     lcd.printf("=");
00339                     break;
00340                 case 1:
00341                     lcd.locate(10,0);
00342                     lcd.printf("=");
00343                     break;
00344                 case 2:
00345                     lcd.locate(2,1);
00346                     lcd.printf("=");
00347                     break;
00348                 case 3:
00349                     lcd.locate(10,1);
00350                     lcd.printf("=");
00351                     break;
00352             }
00353         }
00354     }
00355 }