![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
SMART CLEO keypad
main.cpp@0:96d06d836f68, 2017-09-28 (annotated)
- Committer:
- SMART_CLEO
- Date:
- Thu Sep 28 03:00:43 2017 +0000
- Revision:
- 0:96d06d836f68
SMART_CLEO
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SMART_CLEO | 0:96d06d836f68 | 1 | #include "mbed.h" |
SMART_CLEO | 0:96d06d836f68 | 2 | |
SMART_CLEO | 0:96d06d836f68 | 3 | // C1, C2, C3, C4 |
SMART_CLEO | 0:96d06d836f68 | 4 | PinName pin_KEYPAD_C[4] = {PC_4, PC_5, PC_6, PC_7}; |
SMART_CLEO | 0:96d06d836f68 | 5 | // R1, R2, R3, R4 |
SMART_CLEO | 0:96d06d836f68 | 6 | PinName pin_KEYPAD_R[4] = {PC_8, PC_9, PC_10, PC_11}; |
SMART_CLEO | 0:96d06d836f68 | 7 | |
SMART_CLEO | 0:96d06d836f68 | 8 | DigitalInOut Keypad_C1(pin_KEYPAD_C[0]); |
SMART_CLEO | 0:96d06d836f68 | 9 | DigitalInOut Keypad_C2(pin_KEYPAD_C[1]); |
SMART_CLEO | 0:96d06d836f68 | 10 | DigitalInOut Keypad_C3(pin_KEYPAD_C[2]); |
SMART_CLEO | 0:96d06d836f68 | 11 | DigitalInOut Keypad_C4(pin_KEYPAD_C[3]); |
SMART_CLEO | 0:96d06d836f68 | 12 | |
SMART_CLEO | 0:96d06d836f68 | 13 | char Key_value[16] = {'1', '2', '3', 'A', '4', '5', '6', 'B', '7', '8', '9', 'C', '*', '0', '#', 'D'}; |
SMART_CLEO | 0:96d06d836f68 | 14 | |
SMART_CLEO | 0:96d06d836f68 | 15 | // R1, R2, R3, R4 |
SMART_CLEO | 0:96d06d836f68 | 16 | BusIn Keypad_R(pin_KEYPAD_R[0], pin_KEYPAD_R[1], pin_KEYPAD_R[2], pin_KEYPAD_R[3]); |
SMART_CLEO | 0:96d06d836f68 | 17 | |
SMART_CLEO | 0:96d06d836f68 | 18 | Serial SerialUART(PA_2, PA_3); |
SMART_CLEO | 0:96d06d836f68 | 19 | |
SMART_CLEO | 0:96d06d836f68 | 20 | uint16_t Keypad_Read(void); |
SMART_CLEO | 0:96d06d836f68 | 21 | |
SMART_CLEO | 0:96d06d836f68 | 22 | int main() { |
SMART_CLEO | 0:96d06d836f68 | 23 | uint16_t Keypad = 0, i; |
SMART_CLEO | 0:96d06d836f68 | 24 | SerialUART.baud(115200); |
SMART_CLEO | 0:96d06d836f68 | 25 | SerialUART.printf("\n\r Key pad Push"); |
SMART_CLEO | 0:96d06d836f68 | 26 | |
SMART_CLEO | 0:96d06d836f68 | 27 | while(1) { |
SMART_CLEO | 0:96d06d836f68 | 28 | Keypad = Keypad_Read(); |
SMART_CLEO | 0:96d06d836f68 | 29 | if(Keypad != 0) |
SMART_CLEO | 0:96d06d836f68 | 30 | { |
SMART_CLEO | 0:96d06d836f68 | 31 | SerialUART.printf("\n\r KeyPad : "); |
SMART_CLEO | 0:96d06d836f68 | 32 | for(i=0; i<16; i++) |
SMART_CLEO | 0:96d06d836f68 | 33 | { |
SMART_CLEO | 0:96d06d836f68 | 34 | if(Keypad & (0x0001 << i)) |
SMART_CLEO | 0:96d06d836f68 | 35 | { |
SMART_CLEO | 0:96d06d836f68 | 36 | SerialUART.printf(" %c Pushed",Key_value[i]); |
SMART_CLEO | 0:96d06d836f68 | 37 | break; |
SMART_CLEO | 0:96d06d836f68 | 38 | } |
SMART_CLEO | 0:96d06d836f68 | 39 | } |
SMART_CLEO | 0:96d06d836f68 | 40 | wait(0.5); |
SMART_CLEO | 0:96d06d836f68 | 41 | } |
SMART_CLEO | 0:96d06d836f68 | 42 | } |
SMART_CLEO | 0:96d06d836f68 | 43 | } |
SMART_CLEO | 0:96d06d836f68 | 44 | |
SMART_CLEO | 0:96d06d836f68 | 45 | // |
SMART_CLEO | 0:96d06d836f68 | 46 | // bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
SMART_CLEO | 0:96d06d836f68 | 47 | // ------------------------------------------------------- |
SMART_CLEO | 0:96d06d836f68 | 48 | // value | D # 0 * C 9 8 7 B 6 5 4 A 3 2 1 |
SMART_CLEO | 0:96d06d836f68 | 49 | // |
SMART_CLEO | 0:96d06d836f68 | 50 | // 1 2 3 A |
SMART_CLEO | 0:96d06d836f68 | 51 | // 4 5 6 B |
SMART_CLEO | 0:96d06d836f68 | 52 | // 7 8 9 C |
SMART_CLEO | 0:96d06d836f68 | 53 | // * 0 # D |
SMART_CLEO | 0:96d06d836f68 | 54 | // |
SMART_CLEO | 0:96d06d836f68 | 55 | uint16_t Keypad_Read(void) |
SMART_CLEO | 0:96d06d836f68 | 56 | { |
SMART_CLEO | 0:96d06d836f68 | 57 | uint16_t keypad_tmp, Read_data = 0, i; |
SMART_CLEO | 0:96d06d836f68 | 58 | for(i=0; i<4; i++) |
SMART_CLEO | 0:96d06d836f68 | 59 | { |
SMART_CLEO | 0:96d06d836f68 | 60 | switch(i) |
SMART_CLEO | 0:96d06d836f68 | 61 | { |
SMART_CLEO | 0:96d06d836f68 | 62 | case 0: |
SMART_CLEO | 0:96d06d836f68 | 63 | Keypad_C1.output(); |
SMART_CLEO | 0:96d06d836f68 | 64 | Keypad_C1 = 1; |
SMART_CLEO | 0:96d06d836f68 | 65 | break; |
SMART_CLEO | 0:96d06d836f68 | 66 | case 1: |
SMART_CLEO | 0:96d06d836f68 | 67 | Keypad_C2.output(); |
SMART_CLEO | 0:96d06d836f68 | 68 | Keypad_C2 = 1; |
SMART_CLEO | 0:96d06d836f68 | 69 | break; |
SMART_CLEO | 0:96d06d836f68 | 70 | case 2: |
SMART_CLEO | 0:96d06d836f68 | 71 | Keypad_C3.output(); |
SMART_CLEO | 0:96d06d836f68 | 72 | Keypad_C3 = 1; |
SMART_CLEO | 0:96d06d836f68 | 73 | break; |
SMART_CLEO | 0:96d06d836f68 | 74 | case 3: |
SMART_CLEO | 0:96d06d836f68 | 75 | Keypad_C4.output(); |
SMART_CLEO | 0:96d06d836f68 | 76 | Keypad_C4 = 1; |
SMART_CLEO | 0:96d06d836f68 | 77 | break; |
SMART_CLEO | 0:96d06d836f68 | 78 | } |
SMART_CLEO | 0:96d06d836f68 | 79 | |
SMART_CLEO | 0:96d06d836f68 | 80 | wait(0.001); |
SMART_CLEO | 0:96d06d836f68 | 81 | keypad_tmp = Keypad_R; |
SMART_CLEO | 0:96d06d836f68 | 82 | Read_data |= (keypad_tmp << (i*4)); |
SMART_CLEO | 0:96d06d836f68 | 83 | switch(i) |
SMART_CLEO | 0:96d06d836f68 | 84 | { |
SMART_CLEO | 0:96d06d836f68 | 85 | case 0: |
SMART_CLEO | 0:96d06d836f68 | 86 | Keypad_C1 = 0; |
SMART_CLEO | 0:96d06d836f68 | 87 | Keypad_C1.input(); |
SMART_CLEO | 0:96d06d836f68 | 88 | break; |
SMART_CLEO | 0:96d06d836f68 | 89 | case 1: |
SMART_CLEO | 0:96d06d836f68 | 90 | Keypad_C2 = 0; |
SMART_CLEO | 0:96d06d836f68 | 91 | Keypad_C2.input(); |
SMART_CLEO | 0:96d06d836f68 | 92 | break; |
SMART_CLEO | 0:96d06d836f68 | 93 | case 2: |
SMART_CLEO | 0:96d06d836f68 | 94 | Keypad_C3 = 0; |
SMART_CLEO | 0:96d06d836f68 | 95 | Keypad_C3.input(); |
SMART_CLEO | 0:96d06d836f68 | 96 | break; |
SMART_CLEO | 0:96d06d836f68 | 97 | case 3: |
SMART_CLEO | 0:96d06d836f68 | 98 | Keypad_C4 = 0; |
SMART_CLEO | 0:96d06d836f68 | 99 | Keypad_C4.input(); |
SMART_CLEO | 0:96d06d836f68 | 100 | break; |
SMART_CLEO | 0:96d06d836f68 | 101 | } |
SMART_CLEO | 0:96d06d836f68 | 102 | } |
SMART_CLEO | 0:96d06d836f68 | 103 | return Read_data; |
SMART_CLEO | 0:96d06d836f68 | 104 | } |