Display 16x2 is used to counting numbers show, ascending or descending in 4 positions

Dependencies:   Debounced TextLCDmo mbed

Revision:
0:7f914d2c35cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Oct 18 20:27:38 2013 +0000
@@ -0,0 +1,197 @@
+#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
+
+
+PwmOut rled(LED_BLUE);
+
+DebouncedIn next(PTE2);
+DebouncedIn up(PTE3);
+DebouncedIn down(PTE4);
+
+int C1=0x0F; 
+
+
+int main() {
+
+int c;
+int v,b,n,m;
+v=0;
+b=0;
+n=0;
+m=0;
+c=0;
+
+lcd.cls();     
+lcd.locate(0,0);
+lcd.printf("sp:%d",v);
+lcd.locate(8,0);
+lcd.printf("kp:%d",b);
+lcd.locate(0,1);
+lcd.printf("ki:%d",n);
+lcd.locate(8,1);
+lcd.printf("kd:%d",m);
+
+//SP
+
+while (1){
+
+if (next.falling()){    
+        c++;
+        
+        while (c>3){
+        c=0;
+                 }              
+
+    //Salto a SP
+    if (c==0){
+        
+        lcd.locate(3,0);
+        lcd.putc(0xFE);                
+        lcd.writeCommand(C1);
+        lcd.locate(3,0);
+        lcd.printf("%d",v);
+        
+            while(c==0){    
+            if(up.falling()){
+                v++;
+                lcd.locate(3,0);
+                lcd.printf("%d",v);
+                               }
+            if(down.falling()){
+                v--;
+                if(v<0){
+                v=0;
+                lcd.locate(4,0);
+                lcd.putc(0xFE);                 
+                        }
+                if(v<10){                
+                lcd.locate(4,0);
+                lcd.putc(0xFE);                 
+                        }                        
+                lcd.locate(3,0);
+                lcd.printf("%d",v);               
+                                }  
+                
+             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",b);
+        
+            while(c==1){    
+            if(up.falling()){
+                b++;
+                lcd.locate(11,0);
+                lcd.printf("%d",b);
+                               }
+            if(down.falling()){
+                b--;
+                if(b<0){
+                b=0;
+                lcd.locate(12,0);
+                lcd.putc(0xFE);                 
+                        }
+                if(b<10){                
+                lcd.locate(12,0);
+                lcd.putc(0xFE);                 
+                        }                        
+                lcd.locate(11,0);
+                lcd.printf("%d",b);               
+                                }  
+                
+             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",n);
+        
+            while(c==2){    
+            if(up.falling()){
+                n++;
+                lcd.locate(3,1);
+                lcd.printf("%d",n);
+                               }
+            if(down.falling()){
+                n--;
+                if(n<0){
+                n=0;
+                lcd.locate(4,1);
+                lcd.putc(0xFE);                 
+                        }
+                if(n<10){                
+                lcd.locate(4,1);
+                lcd.putc(0xFE);                 
+                        }                        
+                lcd.locate(3,1);
+                lcd.printf("%d",n);               
+                                }  
+                
+             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",m);
+        
+            while(c==3){    
+            if(up.falling()){
+                m++;
+                lcd.locate(11,1);
+                lcd.printf("%d",m);
+                               }
+            if(down.falling()){
+                m--;
+                if(m<0){
+                m=0;
+                lcd.locate(12,1);
+                lcd.putc(0xFE);                 
+                        }
+                if(m<10){                
+                lcd.locate(12,1);
+                lcd.putc(0xFE);                 
+                        }                        
+                lcd.locate(11,1);
+                lcd.printf("%d",m);               
+                                }  
+                
+             if(next.falling()){
+                c++;
+                }                                                             
+                }
+                }   
+    
+    //          
+                    }       
+}
+}        
\ No newline at end of file