teclado lcd
Dependencies: TextLCD keypad mbed
main.cpp
- Committer:
- serbm
- Date:
- 2017-02-25
- Revision:
- 0:9a67044d749e
File content as of revision 0:9a67044d749e:
# include "mbed.h" # include "keypad.h" # include "TextLCD.h" TextLCD lcd (D15,D14,D13,D12,D11,D10); // RS, e, d4-d7 AnalogIn Ain (A0); AnalogOut Aout (A2); int C4 = 0x0C ; int C1 = 0x0E ; int p = 0 ; int c = 0 ; int y = 0 ; float i; // establecer el punto float j = 0 ; // salida planta float ji = 0 ; // variable de Proceso interno float spi = 0 ; // variable de Proceso interno float h = 0 ; // entrada planta float m = 0 ; // Error float mv = 0 ; float g = 0 ; float ap, ai; int sp = 0 ; int kp = 0 ; int ki = 0 ; int k = 0 ; // Definir sus propios valores del teclado char tabla de teclas [] = { '1' , '2' , '3' , '*' , '4' , '5' , '6' , '0' , '7' , ' 8 ' , ' 9 ' , ' # ' , ' A ' , ' B ' , ' C ' , ' D '}; int Teclado [] = { 1 , 4 , 7 , 13 , 2 , 5 , 8 , 0 , 3 , 6 , 9 , 14 , 10 , 11 , 12 , 15 }; uint32_t cbAfterInput ( uint32_t clave) { if (KEYPAD [clave] == 'A' ) { Teclado [clave] = 0 ; C ++; } if (KEYPAD [clave] == 'B' ) { Teclado [clave] = 0 ; sp = 0 ; kp = 0 ; ki = 0 ; kd = 0 ; } if (KEYTABLE [clave] == 'D' ) { Teclado [clave] = 0 ; p = 1 ; } //////////// if (c == 0 ) { SP = SP + Teclado [clave]; } if (c == 1 ) { kp kp = + Teclado [clave]; } if (c == 2 ) { ki ki = + Teclado [clave]; } if (c == 3 ) { KD = kd + Teclado [clave]; } //////////// volver 0 ; } // Fin unit32_t int main () { teclado teclado (D9,D8,D7,D6,D5,D4,D3,D2); keypad.CallAfterInput (y cbAfterInput); keypad.Start (); lcd.cls (); lcd. printf ( "SP:% d" , sp); lcd.locate ( 8 , 0 ); lcd. printf ( "Kp:% d" , kp); lcd.locate ( 0 , 1 ); lcd. printf ( "Ki:% d" , ki); lcd.locate ( 8 , 1 ); lcd. printf ( "Kd:% d" , kd); lcd.writeCommand (C1); // escribimos ONU comando segun el manual del módulo del LCD lcd.locate ( 0 , 0 ); lcd. printf ( "SP:% d" , sp); mientras que ( 1 ) { if (c == 0 ) { lcd.locate ( 3 , 0 ); . lcd putc ( 0xFE ); lcd.locate ( 4 , 0 ); lcd. printf ( "% d" , sp); // NUEVO !! (no ceros en - proceso) if (sp < 10 ) { lcd.locate ( 5 , 0 ); . lcd putc ( 0xFE ); } if (sp < 100 ) { lcd.locate ( 6 , 0 ); . lcd putc ( 0xFE ); } lcd.locate ( 4 , 0 ); lcd. printf ( "% d" , sp); //wait(0.1); // } if (c == 1 ) { lcd.locate ( 11 , 0 ); . lcd putc ( 0xFE ); lcd.locate ( 12 , 0 ); lcd. printf ( "% d" , kp); // NUEVO !! (no ceros en - proceso) if (kp < 10 ) { lcd.locate ( 13 , 0 ); . lcd putc ( 0xFE ); } if (kp < 100 ) { lcd.locate ( 14 , 0 ); . lcd putc ( 0xFE ); } lcd.locate ( 12 , 0 ); lcd. printf ( "% d" , kp); //wait(0.1); // } if (c == 2 ) { lcd.locate ( 3 , 1 ); . lcd putc ( 0xFE ); lcd.locate ( 4 , 1 ); lcd. printf ( "% d" , ki); // NUEVO !! (no ceros en - proceso) if (Ki < 10 ) { lcd.locate ( 5 , 1 ); . lcd putc ( 0xFE ); } if (ki < 100 ) { lcd.locate ( 6 , 1 ); . lcd putc ( 0xFE ); } lcd.locate ( 4 , 1 ); lcd. printf ( "% d" , ki); //wait(0.2); // } if (c == 3 ) { lcd.locate ( 11 , 1 ); . lcd putc ( 0xFE ); lcd.locate ( 12 , 1 ); lcd. printf ( "% d" , kd); // NUEVO !! (no ceros en - proceso) if (kd < 10 ) { lcd.locate ( 13 , 1 ); . lcd putc ( 0xFE ); } if (kd < 100 ) { lcd.locate ( 14 , 1 ); . lcd putc ( 0xFE ); } lcd.locate ( 12 , 1 ); lcd. printf ( "% d" , kd); //wait(0.2); } if (c == 4 || c> 4 ) { c = 0 ; } if (p == 1 ) { c = 0 ; romper ; } } lcd.writeCommand (C4); // escribimos ONU comando segun el manual del módulo del LCD para quitar el cursor bajo lcd.cls (); // Borra la Pantalla . lcd printf ( "Guardados!" ); wait ( 2 ); lcd.cls (); . lcd printf ( "INICIA EL PID" ); wait ( 2 ); // se imprimen los reseca del control de ************************************* **** i = sp / 999 ; lcd.cls (); lcd. printf ( "Er:% 2F." , m); lcd.locate ( 8 , 0 ); lcd. printf ( "Yo:% 2F." , j); lcd.locate ( 0 , 1 ); lcd. printf ( "SP:% d" , sp); lcd.locate ( 8 , 1 ); lcd. printf ( "Co: 1f%." , h); wait ( 2 ); // while ( 1 ) { spi = sp * ( 3.3 / 999 ); //wait(0.3); i = sp / 999 ; if (i <= 1 ) { j = Ain; ji = j * 3.3 ; m = (SPI-ji); // N = m * 100; ap = kp * m; ai = (Ki * m) + ai; ad = kd * (m-mv); h = p + ai + ad; si (h> 999 ) { h = 999 ; } si (h < 0 ) { h = 0 ; } g = (h / 999 ); Aout = g; esperar ( 0,22 ); lcd.cls (); lcd. printf ( "Er:% 2F." , m); lcd.locate ( 8 , 0 ); lcd. printf ( "Yo:% 2F." , j); lcd.locate ( 0 , 1 ); lcd. printf ( "SP:% d" , sp); lcd.locate ( 8 , 1 ); lcd. printf ( "Co: 1f%." , h); } MV = m; } // Si bien // } // Int main