teclado lcd
Dependencies: TextLCD keypad mbed
main.cpp@0:9a67044d749e, 2017-02-25 (annotated)
- Committer:
- serbm
- Date:
- Sat Feb 25 14:21:11 2017 +0000
- Revision:
- 0:9a67044d749e
teclado con lcd
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
serbm | 0:9a67044d749e | 1 | # include "mbed.h" |
serbm | 0:9a67044d749e | 2 | # include "keypad.h" |
serbm | 0:9a67044d749e | 3 | # include "TextLCD.h" |
serbm | 0:9a67044d749e | 4 | |
serbm | 0:9a67044d749e | 5 | |
serbm | 0:9a67044d749e | 6 | TextLCD lcd (D15,D14,D13,D12,D11,D10); // RS, e, d4-d7 |
serbm | 0:9a67044d749e | 7 | |
serbm | 0:9a67044d749e | 8 | AnalogIn Ain (A0); |
serbm | 0:9a67044d749e | 9 | AnalogOut Aout (A2); |
serbm | 0:9a67044d749e | 10 | |
serbm | 0:9a67044d749e | 11 | int C4 = 0x0C ; |
serbm | 0:9a67044d749e | 12 | int C1 = 0x0E ; |
serbm | 0:9a67044d749e | 13 | int p = 0 ; |
serbm | 0:9a67044d749e | 14 | |
serbm | 0:9a67044d749e | 15 | int c = 0 ; |
serbm | 0:9a67044d749e | 16 | int y = 0 ; |
serbm | 0:9a67044d749e | 17 | float i; // establecer el punto |
serbm | 0:9a67044d749e | 18 | float j = 0 ; // salida planta |
serbm | 0:9a67044d749e | 19 | float ji = 0 ; // variable de Proceso interno |
serbm | 0:9a67044d749e | 20 | float spi = 0 ; // variable de Proceso interno |
serbm | 0:9a67044d749e | 21 | float h = 0 ; // entrada planta |
serbm | 0:9a67044d749e | 22 | float m = 0 ; // Error |
serbm | 0:9a67044d749e | 23 | float mv = 0 ; |
serbm | 0:9a67044d749e | 24 | float g = 0 ; |
serbm | 0:9a67044d749e | 25 | |
serbm | 0:9a67044d749e | 26 | |
serbm | 0:9a67044d749e | 27 | float ap, ai; |
serbm | 0:9a67044d749e | 28 | int sp = 0 ; |
serbm | 0:9a67044d749e | 29 | int kp = 0 ; |
serbm | 0:9a67044d749e | 30 | int ki = 0 ; |
serbm | 0:9a67044d749e | 31 | int k = 0 ; |
serbm | 0:9a67044d749e | 32 | |
serbm | 0:9a67044d749e | 33 | |
serbm | 0:9a67044d749e | 34 | |
serbm | 0:9a67044d749e | 35 | |
serbm | 0:9a67044d749e | 36 | // Definir sus propios valores del teclado |
serbm | 0:9a67044d749e | 37 | char tabla de teclas [] = { '1' , '2' , '3' , '*' , |
serbm | 0:9a67044d749e | 38 | '4' , '5' , '6' , '0' , |
serbm | 0:9a67044d749e | 39 | '7' , ' 8 ' , ' 9 ' , ' # ' , |
serbm | 0:9a67044d749e | 40 | ' A ' , ' B ' , ' C ' , ' D '}; |
serbm | 0:9a67044d749e | 41 | |
serbm | 0:9a67044d749e | 42 | int Teclado [] = { 1 , 4 , 7 , 13 , |
serbm | 0:9a67044d749e | 43 | 2 , 5 , 8 , 0 , |
serbm | 0:9a67044d749e | 44 | 3 , 6 , 9 , 14 , |
serbm | 0:9a67044d749e | 45 | 10 , 11 , 12 , 15 |
serbm | 0:9a67044d749e | 46 | }; |
serbm | 0:9a67044d749e | 47 | |
serbm | 0:9a67044d749e | 48 | uint32_t cbAfterInput ( uint32_t clave) |
serbm | 0:9a67044d749e | 49 | { |
serbm | 0:9a67044d749e | 50 | |
serbm | 0:9a67044d749e | 51 | if (KEYPAD [clave] == 'A' ) |
serbm | 0:9a67044d749e | 52 | { |
serbm | 0:9a67044d749e | 53 | Teclado [clave] = 0 ; |
serbm | 0:9a67044d749e | 54 | C ++; |
serbm | 0:9a67044d749e | 55 | } |
serbm | 0:9a67044d749e | 56 | |
serbm | 0:9a67044d749e | 57 | if (KEYPAD [clave] == 'B' ) { |
serbm | 0:9a67044d749e | 58 | Teclado [clave] = 0 ; |
serbm | 0:9a67044d749e | 59 | sp = 0 ; |
serbm | 0:9a67044d749e | 60 | kp = 0 ; |
serbm | 0:9a67044d749e | 61 | ki = 0 ; |
serbm | 0:9a67044d749e | 62 | kd = 0 ; |
serbm | 0:9a67044d749e | 63 | } |
serbm | 0:9a67044d749e | 64 | |
serbm | 0:9a67044d749e | 65 | |
serbm | 0:9a67044d749e | 66 | if (KEYTABLE [clave] == 'D' ) { |
serbm | 0:9a67044d749e | 67 | Teclado [clave] = 0 ; |
serbm | 0:9a67044d749e | 68 | p = 1 ; |
serbm | 0:9a67044d749e | 69 | } |
serbm | 0:9a67044d749e | 70 | |
serbm | 0:9a67044d749e | 71 | //////////// |
serbm | 0:9a67044d749e | 72 | |
serbm | 0:9a67044d749e | 73 | if (c == 0 ) { |
serbm | 0:9a67044d749e | 74 | |
serbm | 0:9a67044d749e | 75 | SP = SP + Teclado [clave]; |
serbm | 0:9a67044d749e | 76 | |
serbm | 0:9a67044d749e | 77 | } |
serbm | 0:9a67044d749e | 78 | |
serbm | 0:9a67044d749e | 79 | if (c == 1 ) { |
serbm | 0:9a67044d749e | 80 | |
serbm | 0:9a67044d749e | 81 | kp kp = + Teclado [clave]; |
serbm | 0:9a67044d749e | 82 | |
serbm | 0:9a67044d749e | 83 | } |
serbm | 0:9a67044d749e | 84 | if (c == 2 ) { |
serbm | 0:9a67044d749e | 85 | |
serbm | 0:9a67044d749e | 86 | ki ki = + Teclado [clave]; |
serbm | 0:9a67044d749e | 87 | |
serbm | 0:9a67044d749e | 88 | } |
serbm | 0:9a67044d749e | 89 | if (c == 3 ) { |
serbm | 0:9a67044d749e | 90 | |
serbm | 0:9a67044d749e | 91 | KD = kd + Teclado [clave]; |
serbm | 0:9a67044d749e | 92 | |
serbm | 0:9a67044d749e | 93 | } |
serbm | 0:9a67044d749e | 94 | |
serbm | 0:9a67044d749e | 95 | //////////// |
serbm | 0:9a67044d749e | 96 | |
serbm | 0:9a67044d749e | 97 | |
serbm | 0:9a67044d749e | 98 | volver 0 ; |
serbm | 0:9a67044d749e | 99 | } // Fin unit32_t |
serbm | 0:9a67044d749e | 100 | |
serbm | 0:9a67044d749e | 101 | |
serbm | 0:9a67044d749e | 102 | |
serbm | 0:9a67044d749e | 103 | int main () { |
serbm | 0:9a67044d749e | 104 | teclado teclado (D9,D8,D7,D6,D5,D4,D3,D2); |
serbm | 0:9a67044d749e | 105 | keypad.CallAfterInput (y cbAfterInput); |
serbm | 0:9a67044d749e | 106 | keypad.Start (); |
serbm | 0:9a67044d749e | 107 | |
serbm | 0:9a67044d749e | 108 | lcd.cls (); |
serbm | 0:9a67044d749e | 109 | lcd. printf ( "SP:% d" , sp); |
serbm | 0:9a67044d749e | 110 | lcd.locate ( 8 , 0 ); |
serbm | 0:9a67044d749e | 111 | lcd. printf ( "Kp:% d" , kp); |
serbm | 0:9a67044d749e | 112 | lcd.locate ( 0 , 1 ); |
serbm | 0:9a67044d749e | 113 | lcd. printf ( "Ki:% d" , ki); |
serbm | 0:9a67044d749e | 114 | lcd.locate ( 8 , 1 ); |
serbm | 0:9a67044d749e | 115 | lcd. printf ( "Kd:% d" , kd); |
serbm | 0:9a67044d749e | 116 | lcd.writeCommand (C1); // escribimos ONU comando segun el manual del módulo del LCD |
serbm | 0:9a67044d749e | 117 | lcd.locate ( 0 , 0 ); |
serbm | 0:9a67044d749e | 118 | lcd. printf ( "SP:% d" , sp); |
serbm | 0:9a67044d749e | 119 | |
serbm | 0:9a67044d749e | 120 | mientras que ( 1 ) { |
serbm | 0:9a67044d749e | 121 | |
serbm | 0:9a67044d749e | 122 | |
serbm | 0:9a67044d749e | 123 | if (c == 0 ) { |
serbm | 0:9a67044d749e | 124 | lcd.locate ( 3 , 0 ); |
serbm | 0:9a67044d749e | 125 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 126 | lcd.locate ( 4 , 0 ); |
serbm | 0:9a67044d749e | 127 | lcd. printf ( "% d" , sp); |
serbm | 0:9a67044d749e | 128 | |
serbm | 0:9a67044d749e | 129 | // NUEVO !! (no ceros en - proceso) |
serbm | 0:9a67044d749e | 130 | if (sp < 10 ) { |
serbm | 0:9a67044d749e | 131 | lcd.locate ( 5 , 0 ); |
serbm | 0:9a67044d749e | 132 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 133 | } |
serbm | 0:9a67044d749e | 134 | |
serbm | 0:9a67044d749e | 135 | if (sp < 100 ) { |
serbm | 0:9a67044d749e | 136 | lcd.locate ( 6 , 0 ); |
serbm | 0:9a67044d749e | 137 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 138 | } |
serbm | 0:9a67044d749e | 139 | |
serbm | 0:9a67044d749e | 140 | lcd.locate ( 4 , 0 ); |
serbm | 0:9a67044d749e | 141 | lcd. printf ( "% d" , sp); |
serbm | 0:9a67044d749e | 142 | //wait(0.1); |
serbm | 0:9a67044d749e | 143 | |
serbm | 0:9a67044d749e | 144 | // |
serbm | 0:9a67044d749e | 145 | |
serbm | 0:9a67044d749e | 146 | } |
serbm | 0:9a67044d749e | 147 | |
serbm | 0:9a67044d749e | 148 | if (c == 1 ) { |
serbm | 0:9a67044d749e | 149 | lcd.locate ( 11 , 0 ); |
serbm | 0:9a67044d749e | 150 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 151 | lcd.locate ( 12 , 0 ); |
serbm | 0:9a67044d749e | 152 | lcd. printf ( "% d" , kp); |
serbm | 0:9a67044d749e | 153 | |
serbm | 0:9a67044d749e | 154 | // NUEVO !! (no ceros en - proceso) |
serbm | 0:9a67044d749e | 155 | if (kp < 10 ) { |
serbm | 0:9a67044d749e | 156 | lcd.locate ( 13 , 0 ); |
serbm | 0:9a67044d749e | 157 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 158 | } |
serbm | 0:9a67044d749e | 159 | |
serbm | 0:9a67044d749e | 160 | if (kp < 100 ) { |
serbm | 0:9a67044d749e | 161 | lcd.locate ( 14 , 0 ); |
serbm | 0:9a67044d749e | 162 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 163 | } |
serbm | 0:9a67044d749e | 164 | |
serbm | 0:9a67044d749e | 165 | lcd.locate ( 12 , 0 ); |
serbm | 0:9a67044d749e | 166 | lcd. printf ( "% d" , kp); |
serbm | 0:9a67044d749e | 167 | //wait(0.1); |
serbm | 0:9a67044d749e | 168 | |
serbm | 0:9a67044d749e | 169 | // |
serbm | 0:9a67044d749e | 170 | |
serbm | 0:9a67044d749e | 171 | } |
serbm | 0:9a67044d749e | 172 | |
serbm | 0:9a67044d749e | 173 | if (c == 2 ) { |
serbm | 0:9a67044d749e | 174 | lcd.locate ( 3 , 1 ); |
serbm | 0:9a67044d749e | 175 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 176 | lcd.locate ( 4 , 1 ); |
serbm | 0:9a67044d749e | 177 | lcd. printf ( "% d" , ki); |
serbm | 0:9a67044d749e | 178 | |
serbm | 0:9a67044d749e | 179 | // NUEVO !! (no ceros en - proceso) |
serbm | 0:9a67044d749e | 180 | if (Ki < 10 ) { |
serbm | 0:9a67044d749e | 181 | lcd.locate ( 5 , 1 ); |
serbm | 0:9a67044d749e | 182 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 183 | } |
serbm | 0:9a67044d749e | 184 | |
serbm | 0:9a67044d749e | 185 | if (ki < 100 ) { |
serbm | 0:9a67044d749e | 186 | lcd.locate ( 6 , 1 ); |
serbm | 0:9a67044d749e | 187 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 188 | } |
serbm | 0:9a67044d749e | 189 | |
serbm | 0:9a67044d749e | 190 | lcd.locate ( 4 , 1 ); |
serbm | 0:9a67044d749e | 191 | lcd. printf ( "% d" , ki); |
serbm | 0:9a67044d749e | 192 | //wait(0.2); |
serbm | 0:9a67044d749e | 193 | |
serbm | 0:9a67044d749e | 194 | // |
serbm | 0:9a67044d749e | 195 | |
serbm | 0:9a67044d749e | 196 | } |
serbm | 0:9a67044d749e | 197 | if (c == 3 ) { |
serbm | 0:9a67044d749e | 198 | lcd.locate ( 11 , 1 ); |
serbm | 0:9a67044d749e | 199 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 200 | lcd.locate ( 12 , 1 ); |
serbm | 0:9a67044d749e | 201 | lcd. printf ( "% d" , kd); |
serbm | 0:9a67044d749e | 202 | |
serbm | 0:9a67044d749e | 203 | // NUEVO !! (no ceros en - proceso) |
serbm | 0:9a67044d749e | 204 | if (kd < 10 ) { |
serbm | 0:9a67044d749e | 205 | lcd.locate ( 13 , 1 ); |
serbm | 0:9a67044d749e | 206 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 207 | } |
serbm | 0:9a67044d749e | 208 | |
serbm | 0:9a67044d749e | 209 | if (kd < 100 ) { |
serbm | 0:9a67044d749e | 210 | lcd.locate ( 14 , 1 ); |
serbm | 0:9a67044d749e | 211 | . lcd putc ( 0xFE ); |
serbm | 0:9a67044d749e | 212 | } |
serbm | 0:9a67044d749e | 213 | |
serbm | 0:9a67044d749e | 214 | lcd.locate ( 12 , 1 ); |
serbm | 0:9a67044d749e | 215 | lcd. printf ( "% d" , kd); |
serbm | 0:9a67044d749e | 216 | //wait(0.2); |
serbm | 0:9a67044d749e | 217 | } |
serbm | 0:9a67044d749e | 218 | |
serbm | 0:9a67044d749e | 219 | if (c == 4 || c> 4 ) { |
serbm | 0:9a67044d749e | 220 | c = 0 ; |
serbm | 0:9a67044d749e | 221 | } |
serbm | 0:9a67044d749e | 222 | |
serbm | 0:9a67044d749e | 223 | if (p == 1 ) { |
serbm | 0:9a67044d749e | 224 | c = 0 ; |
serbm | 0:9a67044d749e | 225 | romper ; |
serbm | 0:9a67044d749e | 226 | } |
serbm | 0:9a67044d749e | 227 | |
serbm | 0:9a67044d749e | 228 | } |
serbm | 0:9a67044d749e | 229 | |
serbm | 0:9a67044d749e | 230 | |
serbm | 0:9a67044d749e | 231 | lcd.writeCommand (C4); // escribimos ONU comando segun el manual del módulo del LCD para quitar el cursor bajo |
serbm | 0:9a67044d749e | 232 | lcd.cls (); // Borra la Pantalla |
serbm | 0:9a67044d749e | 233 | . lcd printf ( "Guardados!" ); |
serbm | 0:9a67044d749e | 234 | wait ( 2 ); |
serbm | 0:9a67044d749e | 235 | lcd.cls (); |
serbm | 0:9a67044d749e | 236 | . lcd printf ( "INICIA EL PID" ); |
serbm | 0:9a67044d749e | 237 | wait ( 2 ); |
serbm | 0:9a67044d749e | 238 | // se imprimen los reseca del control de ************************************* **** |
serbm | 0:9a67044d749e | 239 | |
serbm | 0:9a67044d749e | 240 | i = sp / 999 ; |
serbm | 0:9a67044d749e | 241 | lcd.cls (); |
serbm | 0:9a67044d749e | 242 | lcd. printf ( "Er:% 2F." , m); |
serbm | 0:9a67044d749e | 243 | lcd.locate ( 8 , 0 ); |
serbm | 0:9a67044d749e | 244 | lcd. printf ( "Yo:% 2F." , j); |
serbm | 0:9a67044d749e | 245 | lcd.locate ( 0 , 1 ); |
serbm | 0:9a67044d749e | 246 | lcd. printf ( "SP:% d" , sp); |
serbm | 0:9a67044d749e | 247 | lcd.locate ( 8 , 1 ); |
serbm | 0:9a67044d749e | 248 | lcd. printf ( "Co: 1f%." , h); |
serbm | 0:9a67044d749e | 249 | wait ( 2 ); |
serbm | 0:9a67044d749e | 250 | |
serbm | 0:9a67044d749e | 251 | // |
serbm | 0:9a67044d749e | 252 | while ( 1 ) { |
serbm | 0:9a67044d749e | 253 | |
serbm | 0:9a67044d749e | 254 | spi = sp * ( 3.3 / 999 ); |
serbm | 0:9a67044d749e | 255 | |
serbm | 0:9a67044d749e | 256 | //wait(0.3); |
serbm | 0:9a67044d749e | 257 | i = sp / 999 ; |
serbm | 0:9a67044d749e | 258 | if (i <= 1 ) { |
serbm | 0:9a67044d749e | 259 | |
serbm | 0:9a67044d749e | 260 | j = Ain; |
serbm | 0:9a67044d749e | 261 | ji = j * 3.3 ; |
serbm | 0:9a67044d749e | 262 | m = (SPI-ji); |
serbm | 0:9a67044d749e | 263 | // N = m * 100; |
serbm | 0:9a67044d749e | 264 | ap = kp * m; |
serbm | 0:9a67044d749e | 265 | ai = (Ki * m) + ai; |
serbm | 0:9a67044d749e | 266 | |
serbm | 0:9a67044d749e | 267 | ad = kd * (m-mv); |
serbm | 0:9a67044d749e | 268 | h = p + ai + ad; |
serbm | 0:9a67044d749e | 269 | |
serbm | 0:9a67044d749e | 270 | si (h> 999 ) { |
serbm | 0:9a67044d749e | 271 | h = 999 ; |
serbm | 0:9a67044d749e | 272 | } |
serbm | 0:9a67044d749e | 273 | si (h < 0 ) { |
serbm | 0:9a67044d749e | 274 | h = 0 ; |
serbm | 0:9a67044d749e | 275 | } |
serbm | 0:9a67044d749e | 276 | |
serbm | 0:9a67044d749e | 277 | g = (h / 999 ); |
serbm | 0:9a67044d749e | 278 | |
serbm | 0:9a67044d749e | 279 | Aout = g; |
serbm | 0:9a67044d749e | 280 | esperar ( 0,22 ); |
serbm | 0:9a67044d749e | 281 | |
serbm | 0:9a67044d749e | 282 | |
serbm | 0:9a67044d749e | 283 | lcd.cls (); |
serbm | 0:9a67044d749e | 284 | lcd. printf ( "Er:% 2F." , m); |
serbm | 0:9a67044d749e | 285 | lcd.locate ( 8 , 0 ); |
serbm | 0:9a67044d749e | 286 | lcd. printf ( "Yo:% 2F." , j); |
serbm | 0:9a67044d749e | 287 | lcd.locate ( 0 , 1 ); |
serbm | 0:9a67044d749e | 288 | lcd. printf ( "SP:% d" , sp); |
serbm | 0:9a67044d749e | 289 | lcd.locate ( 8 , 1 ); |
serbm | 0:9a67044d749e | 290 | lcd. printf ( "Co: 1f%." , h); |
serbm | 0:9a67044d749e | 291 | } |
serbm | 0:9a67044d749e | 292 | |
serbm | 0:9a67044d749e | 293 | |
serbm | 0:9a67044d749e | 294 | MV = m; |
serbm | 0:9a67044d749e | 295 | } // Si bien |
serbm | 0:9a67044d749e | 296 | // |
serbm | 0:9a67044d749e | 297 | |
serbm | 0:9a67044d749e | 298 | } // Int main |