Tarea2, procesadores
Dependencies: Debounced TextLCDm mbed
Diff: main.cpp
- Revision:
- 0:62bc56579cdb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Nov 10 20:28:47 2013 +0000 @@ -0,0 +1,462 @@ +#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; + } + +} +} \ No newline at end of file