Practica_6_-_Ejercicio_05
Dependencies: mbed TextLCD Keypad
main.cpp@32:d5752716cdd4, 2019-11-20 (annotated)
- Committer:
- isaacross99
- Date:
- Wed Nov 20 05:05:29 2019 +0000
- Revision:
- 32:d5752716cdd4
- Parent:
- 31:080589c1250a
0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dan | 0:7dec7e9ac085 | 1 | #include "mbed.h" |
isaacross99 | 32:d5752716cdd4 | 2 | #include "TextLCD.h" |
isaacross99 | 32:d5752716cdd4 | 3 | #include "Keypad.h" |
isaacross99 | 32:d5752716cdd4 | 4 | TextLCD lcd(PTE24, PTE25, PTD1, PTD3, PTD2, PTD0, TextLCD::LCD16x2); // rs, e, d4-d7 |
isaacross99 | 32:d5752716cdd4 | 5 | Keypad kpad(PTA2, PTB23, PTA1, PTB9, PTC4, PTC12, PTC3, PTC2); |
isaacross99 | 32:d5752716cdd4 | 6 | DigitalIn borrador(PTC17); |
isaacross99 | 32:d5752716cdd4 | 7 | DigitalOut led(PTC16); |
isaacross99 | 32:d5752716cdd4 | 8 | int main() { |
isaacross99 | 32:d5752716cdd4 | 9 | char key, memoria = '.'; |
isaacross99 | 32:d5752716cdd4 | 10 | int released = 1, contador = 0; |
isaacross99 | 32:d5752716cdd4 | 11 | led = 0; |
isaacross99 | 32:d5752716cdd4 | 12 | while(1){ |
isaacross99 | 32:d5752716cdd4 | 13 | if(borrador){ //Testear la dualidad del botón borrador con el ejercicio 3. |
isaacross99 | 32:d5752716cdd4 | 14 | lcd.cls(); |
isaacross99 | 32:d5752716cdd4 | 15 | led = 0; |
isaacross99 | 32:d5752716cdd4 | 16 | contador = 0; |
isaacross99 | 32:d5752716cdd4 | 17 | } |
isaacross99 | 32:d5752716cdd4 | 18 | else{ |
isaacross99 | 32:d5752716cdd4 | 19 | key = kpad.ReadKey(); //read the current key pressed |
isaacross99 | 30:f7518060fc89 | 20 | |
isaacross99 | 32:d5752716cdd4 | 21 | if(key == '\0') |
isaacross99 | 32:d5752716cdd4 | 22 | released = 1; //set the flag when all keys are released |
isaacross99 | 32:d5752716cdd4 | 23 | |
isaacross99 | 32:d5752716cdd4 | 24 | if((key != '\0') && (released == 1)) { //if a key is pressed AND previous key was release |
isaacross99 | 32:d5752716cdd4 | 25 | lcd.cls(); |
isaacross99 | 32:d5752716cdd4 | 26 | switch(key){ |
isaacross99 | 32:d5752716cdd4 | 27 | case '0': lcd.printf("00000000 "); |
isaacross99 | 32:d5752716cdd4 | 28 | break; |
isaacross99 | 32:d5752716cdd4 | 29 | case '1': lcd.printf("00000001 "); |
isaacross99 | 32:d5752716cdd4 | 30 | break; |
isaacross99 | 32:d5752716cdd4 | 31 | case '2': lcd.printf("00000010 "); |
isaacross99 | 32:d5752716cdd4 | 32 | break; |
isaacross99 | 32:d5752716cdd4 | 33 | case '3': lcd.printf("00000011 "); |
isaacross99 | 32:d5752716cdd4 | 34 | break; |
isaacross99 | 32:d5752716cdd4 | 35 | case '4': lcd.printf("00000100 "); |
isaacross99 | 32:d5752716cdd4 | 36 | break; |
isaacross99 | 32:d5752716cdd4 | 37 | case '5': lcd.printf("00000101 "); |
isaacross99 | 32:d5752716cdd4 | 38 | break; |
isaacross99 | 32:d5752716cdd4 | 39 | case '6': lcd.printf("00000110 "); |
isaacross99 | 32:d5752716cdd4 | 40 | break; |
isaacross99 | 32:d5752716cdd4 | 41 | case '7': lcd.printf("00000111 "); |
isaacross99 | 32:d5752716cdd4 | 42 | break; |
isaacross99 | 32:d5752716cdd4 | 43 | case '8': lcd.printf("00001000 "); |
isaacross99 | 32:d5752716cdd4 | 44 | break; |
isaacross99 | 32:d5752716cdd4 | 45 | case '9': lcd.printf("00001001 "); |
isaacross99 | 32:d5752716cdd4 | 46 | break; |
isaacross99 | 32:d5752716cdd4 | 47 | case 'A': lcd.printf("00001010 "); |
isaacross99 | 32:d5752716cdd4 | 48 | break; |
isaacross99 | 32:d5752716cdd4 | 49 | case 'B': lcd.printf("00001011 "); |
isaacross99 | 32:d5752716cdd4 | 50 | break; |
isaacross99 | 32:d5752716cdd4 | 51 | case 'C': lcd.printf("00001100 "); |
isaacross99 | 32:d5752716cdd4 | 52 | break; |
isaacross99 | 32:d5752716cdd4 | 53 | case 'D': lcd.printf("00001101 "); |
isaacross99 | 32:d5752716cdd4 | 54 | break; |
isaacross99 | 32:d5752716cdd4 | 55 | default: lcd.printf("%c", key); |
isaacross99 | 32:d5752716cdd4 | 56 | } |
isaacross99 | 32:d5752716cdd4 | 57 | |
isaacross99 | 32:d5752716cdd4 | 58 | if(memoria == key) |
isaacross99 | 32:d5752716cdd4 | 59 | contador = contador + 1; |
isaacross99 | 32:d5752716cdd4 | 60 | else |
isaacross99 | 32:d5752716cdd4 | 61 | contador = 0; |
isaacross99 | 32:d5752716cdd4 | 62 | |
isaacross99 | 32:d5752716cdd4 | 63 | if(contador > 0){ |
isaacross99 | 32:d5752716cdd4 | 64 | lcd.cls(); |
isaacross99 | 32:d5752716cdd4 | 65 | lcd.printf("\n%c = %d", key, contador); |
isaacross99 | 32:d5752716cdd4 | 66 | } |
isaacross99 | 32:d5752716cdd4 | 67 | |
isaacross99 | 32:d5752716cdd4 | 68 | if(contador == 10){ |
isaacross99 | 32:d5752716cdd4 | 69 | led = 1; |
isaacross99 | 32:d5752716cdd4 | 70 | } |
isaacross99 | 32:d5752716cdd4 | 71 | |
isaacross99 | 32:d5752716cdd4 | 72 | memoria = key; |
isaacross99 | 32:d5752716cdd4 | 73 | released = 0; //clear the flag to indicate that key is still pressed |
isaacross99 | 32:d5752716cdd4 | 74 | } |
isaacross99 | 32:d5752716cdd4 | 75 | } |
isaacross99 | 31:080589c1250a | 76 | } |
isaacross99 | 28:868b283c5f77 | 77 | } |