Tarea2, procesadores
Dependencies: Debounced TextLCDm mbed
main.cpp
- Committer:
- mandres7
- Date:
- 2013-11-10
- Revision:
- 0:62bc56579cdb
File content as of revision 0:62bc56579cdb:
#include "mbed.h" #include "TextLCD.h" #include "DebouncedIn.h" TextLCD lcd(PTC10, PTC11, PTC12, PTC13, PTC16, PTC17); // rs, e, d4-d7.. Nota: No se quiere función de lectura, luego ese puerto a tierra. //lectura=1, escritura=0 //Aumento en rampa de Sp, Kp, Ki, Kd PwmOut rled(LED_RED); DebouncedIn next(PTE2); DebouncedIn up(PTE3); DebouncedIn down(PTE4); Timer timer1; int C1=0x0F; int i,j,k,l; int main() { int c; c=0; lcd.cls(); lcd.locate(0,0); lcd.printf("sp:%d",i); lcd.locate(8,0); lcd.printf("kp:%d",j); lcd.locate(0,1); lcd.printf("ki:%d",k); lcd.locate(8,1); lcd.printf("kd:%d",l); //SP while (1){ if (next.falling()){ c++; } //Salto a SP if (c==0){ lcd.locate(3,0); lcd.putc(0xFE); lcd.writeCommand(C1); lcd.locate(3,0); lcd.printf("%d",i); while(c==0){ //espacio de trabajo if(up.falling()||down.falling()){ timer1.start(); while(up==0||down==0){ if(up==1&&down==1){ timer1.stop(); timer1.reset(); } if (timer1.read()>0&&timer1.read()<=5&&up==0&&i>=0&&i<=9999) { ++i; wait(0.1); } if (timer1.read()>0&&timer1.read()<=5&&down==0&&i>=0&&i<=9999) { --i; wait(0.1); } if (timer1.read()>5&&timer1.read()<=10&&up==0&&i>=0&&i<=9999) { i+=5; wait(0.1/5); } if (timer1.read()>5&&timer1.read()<=10&&down==0&&i>=0&&i<=9999) { i-=5; wait(0.1/5); } if (timer1.read()>10&&timer1.read()<=100&&up==0&&i>=0&&i<=9999) { i+=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=100&&down==0&&i>=0&&i<=9999) { i-=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=1000&&up==0&&i>=0&&i<=9999) { i+=100; wait(0.003); } if (timer1.read()>10&&timer1.read()<=1000&&down==0&&i>=0&&i<=9999) { i-=100; wait(0.003); } if(i<0){ i=0; } if(i>9999){ i=9999; } //NEW !! (not zeros in -- process) if(i<10){ lcd.locate(4,0); lcd.putc(0xFE); } if(i<100){ lcd.locate(5,0); lcd.putc(0xFE); } if(i<1000){ lcd.locate(6,0); lcd.putc(0xFE); } // i=i; //lcd.locate(3,0); //lcd.printf(" "); lcd.locate(3,0); lcd.printf("%d", i); wait(0.2); } } //fin espacio de trabajo if(next.falling()){ c++; } } } //Salto a Kp if (c==1){ lcd.locate(11,0); lcd.putc(0xFE); lcd.writeCommand(C1); lcd.locate(11,0); lcd.printf("%d",j); while(c==1){ //Work space if(up.falling()||down.falling()){ timer1.start(); while(up==0||down==0){ if(up==1&&down==1){ timer1.stop(); timer1.reset(); } if (timer1.read()>0&&timer1.read()<=5&&up==0&&j>=0&&j<=9999) { ++j; wait(0.1); } if (timer1.read()>0&&timer1.read()<=5&&down==0&&j>=0&&j<=9999) { --j; wait(0.1); } if (timer1.read()>5&&timer1.read()<=10&&up==0&&j>=0&&j<=9999) { j+=5; wait(0.1/5); } if (timer1.read()>5&&timer1.read()<=10&&down==0&&j>=0&&j<=9999) { j-=5; wait(0.1/5); } if (timer1.read()>10&&timer1.read()<=100&&up==0&&j>=0&&j<=9999) { j+=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=100&&down==0&&j>=0&&j<=9999) { j-=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=1000&&up==0&&j>=0&&j<=9999) { j+=100; wait(0.003); } if (timer1.read()>10&&timer1.read()<=1000&&down==0&&j>=0&&j<=9999) { j-=100; wait(0.003); } if(j<0){ j=0; } if(j>9999){ j=9999; } //NEW !! (not zeros in -- process) if(j<10){ lcd.locate(12,0); lcd.putc(0xFE); } if(j<100){ lcd.locate(13,0); lcd.putc(0xFE); } if(j<1000){ lcd.locate(14,0); lcd.putc(0xFE); } // j=j; //lcd.locate(11,0); //lcd.printf(" "); lcd.locate(11,0); //before lcd.locate(12,0); lcd.printf("%d", j); wait(0.2); } } //End work space if(next.falling()){ c++; } } } //Salto a Kp if (c==2){ lcd.locate(3,1); lcd.putc(0xFE); lcd.writeCommand(C1); lcd.locate(3,1); lcd.printf("%d",k); while(c==2){ //Work space if(up.falling()||down.falling()){ timer1.start(); while(up==0||down==0){ if(up==1&&down==1){ timer1.stop(); timer1.reset(); } if (timer1.read()>0&&timer1.read()<=5&&up==0&&k>=0&&k<=9999) { ++k; wait(0.1); } if (timer1.read()>0&&timer1.read()<=5&&down==0&&k>=0&&k<=9999) { --k; wait(0.1); } if (timer1.read()>5&&timer1.read()<=10&&up==0&&k>=0&&k<=9999) { k+=5; wait(0.1/5); } if (timer1.read()>5&&timer1.read()<=10&&down==0&&k>=0&&k<=9999) { k-=5; wait(0.1/5); } if (timer1.read()>10&&timer1.read()<=100&&up==0&&k>=0&&k<=9999) { k+=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=100&&down==0&&k>=0&&k<=9999) { k-=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=1000&&up==0&&k>=0&&k<=9999) { k+=100; wait(0.003); } if (timer1.read()>10&&timer1.read()<=1000&&down==0&&k>=0&&k<=9999) { k-=100; wait(0.003); } if(k<0){ k=0; } if(k>9999){ k=9999; } //NEW !! (not zeros in -- process) if(k<10){ lcd.locate(4,1); lcd.putc(0xFE); } if(k<100){ lcd.locate(5,1); lcd.putc(0xFE); } if(k<1000){ lcd.locate(6,1); lcd.putc(0xFE); } // k=k; //lcd.locate(3,1); //lcd.printf(" "); lcd.locate(3,1); //before lcd.locate(4,1); lcd.printf("%d", k); wait(0.2); } } //End work space if(next.falling()){ c++; } } } //Salto a Kp if (c==3){ lcd.locate(11,1); lcd.putc(0xFE); lcd.writeCommand(C1); lcd.locate(11,1); lcd.printf("%d",l); while(c==3){ //Work space if(up.falling()||down.falling()){ timer1.start(); while(up==0||down==0){ if(up==1&&down==1){ timer1.stop(); timer1.reset(); } if (timer1.read()>0&&timer1.read()<=5&&up==0&&l>=0&&l<=9999) { ++l; wait(0.1); } if (timer1.read()>0&&timer1.read()<=5&&down==0&&l>=0&&l<=9999) { --l; wait(0.1); } if (timer1.read()>5&&timer1.read()<=10&&up==0&&l>=0&&l<=9999) { l+=5; wait(0.1/5); } if (timer1.read()>5&&timer1.read()<=10&&down==0&&l>=0&&l<=9999) { l-=5; wait(0.1/5); } if (timer1.read()>10&&timer1.read()<=100&&up==0&&l>=0&&l<=9999) { l+=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=100&&down==0&&l>=0&&l<=9999) { l-=10; wait(0.03); } if (timer1.read()>10&&timer1.read()<=1000&&up==0&&l>=0&&l<=9999) { l+=100; wait(0.003); } if (timer1.read()>10&&timer1.read()<=1000&&down==0&&l>=0&&l<=9999) { l-=100; wait(0.003); } if(l<0){ l=0; } if(l>9999){ l=9999; } //NEW !! (not zeros in -- process) if(l<10){ lcd.locate(12,1); lcd.putc(0xFE); } if(l<100){ lcd.locate(13,1); lcd.putc(0xFE); } if(l<1000){ lcd.locate(14,1); lcd.putc(0xFE); } // l=l; //lcd.locate(11,1); //lcd.printf(" "); lcd.locate(11,1); //before lcd.locate(12,1); lcd.printf("%d", l); wait(0.2); } } //End work space if(next.falling()){ c++; } } } // if(c==4 || c>4){ c=0; } } }