SMART CLEO keypad

Committer:
SMART_CLEO
Date:
Thu Sep 28 03:00:43 2017 +0000
Revision:
0:96d06d836f68
SMART_CLEO

Who changed what in which revision?

UserRevisionLine numberNew 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 }