Código para programar un PID por medio de un teclado matricial y un LCD.

Dependencies:   FPointer TextLCD keypad mbed

Files at this revision

API Documentation at this revision

Comitter:
gjusecheo
Date:
Wed Jun 01 15:35:55 2016 +0000
Commit message:
Tarea_LCD_PID

Changed in this revision

FPointer.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
keypad.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r e4f5d9537189 FPointer.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FPointer.lib	Wed Jun 01 15:35:55 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/AjK/code/FPointer/#56e309e76c19
diff -r 000000000000 -r e4f5d9537189 TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Wed Jun 01 15:35:55 2016 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/avallejopo/code/TextLCD/#aba8ab3dde9d
diff -r 000000000000 -r e4f5d9537189 keypad.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/keypad.lib	Wed Jun 01 15:35:55 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/yoonghm/code/keypad/#e48ba5b4c497
diff -r 000000000000 -r e4f5d9537189 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jun 01 15:35:55 2016 +0000
@@ -0,0 +1,135 @@
+#include "mbed.h"
+#include "keypad.h"
+#include "TextLCD.h"
+#include "stdlib.h"
+
+TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
+int C1=0x0F; // Cursor
+int C4=0x0C; // quito cursor bajo
+int kpnum=0,kinum=0,spnum=0,kdnum=0,pos=1,tecla,flag1=1,num=0;
+int flagt=0;
+Timer t;
+char cadena[3]={' ',' ',' '};
+int llena=0; //verificar que la entrada es de 3 numeros
+// Define your own keypad values
+char Keytable[] = { '1', '2', '3', 'A',
+                    '4', '5', '6', 'B',
+                    '7', '8', '9', 'C',
+                    '*', '0', '#', 'D'
+                  };
+
+uint32_t cbAfterInput(uint32_t index) {
+    tecla=index;
+    flag1=0;
+    return 0;
+}
+
+int main() {
+    //             f0    f1    f2    f3   c0     c1    c2    c3
+    Keypad keypad(PTA1, PTA2, PTD4, PTA12,PTC7, PTC0, PTC3, PTC4);
+    ini1:
+    lcd.cls(); // Borrar Pantalla
+    lcd.locate(0,0);
+    lcd.printf("**PID-TECLADO**");
+    wait(1);
+    lcd.cls();
+    
+    lcd.locate(0,0);
+    lcd.printf("Kp=%d",kpnum);
+    lcd.locate(8,0);
+    lcd.printf("Ki=%d",kinum);
+    lcd.locate(0,1);
+    lcd.printf("Kd=%d",kdnum);
+    lcd.locate(8,1);
+    lcd.printf("Sp=%d",spnum);
+    
+    //lcd.locate(3,0);
+    //lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
+    
+    ini2:
+    keypad.CallAfterInput(&cbAfterInput);
+    keypad.Start();
+    if(flag1==0){
+        if(Keytable[tecla]=='B'){
+            cadena[0]=' ';cadena[1]=' ';cadena[2]=' ';
+            llena=0;
+            num=0;
+            if(pos==4){
+                pos=1;}
+            else {
+                pos++;}
+        }
+        else if(Keytable[tecla]=='A'){
+            llena--;
+            cadena[llena]=' ';
+            num=strtod(cadena,NULL);
+        }
+        else if((tecla==0)||(tecla==1)||(tecla==2)||(tecla==4)||(tecla==5)||(tecla==6)||(tecla==8)||(tecla==9)||(tecla==10)||(tecla==13)){
+            if(llena<3){
+                cadena[llena]=Keytable[tecla];
+                num=strtod(cadena,NULL);
+                llena++;}
+        }
+        else if(Keytable[tecla]=='D'){
+            lcd.writeCommand(C4);//escribimos un comando segun el manual del modulo LCD para quitar cursor bajo
+            lcd.cls(); //borra la pantalla
+            lcd.printf("   GUARDADOS!");
+            wait(1);  
+            lcd.cls();
+            lcd.locate(0,0);
+            lcd.printf("Kp=%d",kpnum);
+            lcd.locate(8,0);
+            lcd.printf("Ki=%d",kinum);
+            lcd.locate(0,1);
+            lcd.printf("Kd=%d",kdnum);
+            lcd.locate(8,1);
+            lcd.printf("Sp=%d",spnum);
+            wait(2);
+            cicloPID:
+                if(Keytable[tecla]=='C'){
+                    kpnum=0;kinum=0;kdnum=0;spnum=0;llena=0;pos=1;flag1=1;
+                    cadena[0]=' ';cadena[1]=' ';cadena[2]=' ';
+                    goto ini1;}
+                
+                if(flagt==0){//se muestran las variables
+                    t.start();
+                    flagt=1;}
+                if(t>=0.3){
+                    lcd.locate(3,0);lcd.printf("    ");
+                    lcd.locate(3,0);lcd.printf("%d",kpnum);
+                    lcd.locate(11,0);lcd.printf("    ");
+                    lcd.locate(11,0);lcd.printf("%d",kinum);
+                    lcd.locate(3,1);lcd.printf("    ");
+                    lcd.locate(3,1);lcd.printf("%d",kdnum);
+                    lcd.locate(11,1);lcd.printf("    ");
+                    lcd.locate(11,1);lcd.printf("%d",spnum);
+                    flagt=0;
+                    t.reset();
+                }
+                goto cicloPID;
+        }            
+        if(pos==1){
+            kpnum=num;
+             lcd.locate(3,0);lcd.writeCommand(C1);
+            lcd.locate(3,0);lcd.printf("    ");
+            lcd.locate(3,0);lcd.printf("%d",kpnum);
+        }
+        else if(pos==2){
+             kinum=num;
+            lcd.locate(11,0);lcd.printf("    ");
+            lcd.locate(11,0);lcd.printf("%d",kinum);
+        }
+        else if(pos==3){
+           kdnum=num;
+            lcd.locate(3,1);lcd.printf("    ");
+            lcd.locate(3,1);lcd.printf("%d",kdnum);
+        }
+        else if(pos==4){
+            spnum=num;
+            lcd.locate(11,1);lcd.printf("    ");
+            lcd.locate(11,1);lcd.printf("%d",spnum);
+        }
+    }
+    flag1=1;
+    goto ini2;        
+}
\ No newline at end of file
diff -r 000000000000 -r e4f5d9537189 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jun 01 15:35:55 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/6c34061e7c34
\ No newline at end of file