keypad kutuphanesi, Interruptsiz

Dependents:   rtos_uygulamasi guvenlik_sistemi keypad_kullanimi lcd_kullanimi_keypad ... more

Committer:
marvas
Date:
Mon May 06 10:27:01 2019 +0000
Revision:
0:7da3ab010a87
keypad kutuphanesi

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marvas 0:7da3ab010a87 1 #ifndef KEYPAD_H
marvas 0:7da3ab010a87 2 #define KEYPAD_H
marvas 0:7da3ab010a87 3
marvas 0:7da3ab010a87 4 #include "mbed.h"
marvas 0:7da3ab010a87 5
marvas 0:7da3ab010a87 6 #define CHNG_CNT 4
marvas 0:7da3ab010a87 7
marvas 0:7da3ab010a87 8 /*
marvas 0:7da3ab010a87 9 @code
marvas 0:7da3ab010a87 10 #include "mbed.h"
marvas 0:7da3ab010a87 11 #include "Keypad.h"
marvas 0:7da3ab010a87 12
marvas 0:7da3ab010a87 13 Keypad key(D10, D9, D8, D7, D6, D5, D4, D3);
marvas 0:7da3ab010a87 14
marvas 0:7da3ab010a87 15 char key_table[] = {
marvas 0:7da3ab010a87 16 '1', '2', '3', 'A',
marvas 0:7da3ab010a87 17 '4', '5', '6', 'B',
marvas 0:7da3ab010a87 18 '7', '8', '9', 'C',
marvas 0:7da3ab010a87 19 '*', '0', '#', 'D'
marvas 0:7da3ab010a87 20 };
marvas 0:7da3ab010a87 21 int main() {
marvas 0:7da3ab010a87 22 uint32_t key_num;
marvas 0:7da3ab010a87 23 while(true) {
marvas 0:7da3ab010a87 24 while ((key_num = key.read()) != 0){
marvas 0:7da3ab010a87 25 printf("%c\r\n", *(key_table + key_num-1));
marvas 0:7da3ab010a87 26 }
marvas 0:7da3ab010a87 27 wait(1.0);
marvas 0:7da3ab010a87 28 }
marvas 0:7da3ab010a87 29 }
marvas 0:7da3ab010a87 30 * @endcode
marvas 0:7da3ab010a87 31 */
marvas 0:7da3ab010a87 32
marvas 0:7da3ab010a87 33 class Keypad {
marvas 0:7da3ab010a87 34 public:
marvas 0:7da3ab010a87 35 /** 4x4 keypad interface:
marvas 0:7da3ab010a87 36 * @param key input port A,B,C,D
marvas 0:7da3ab010a87 37 * @param key output(scan) port Q,X,Y,Z
marvas 0:7da3ab010a87 38 */
marvas 0:7da3ab010a87 39 Keypad(PinName qx, PinName kx, PinName ky, PinName kz,
marvas 0:7da3ab010a87 40 PinName ka, PinName kb, PinName kc, PinName kd);
marvas 0:7da3ab010a87 41
marvas 0:7da3ab010a87 42 /** Read key data into buffer
marvas 0:7da3ab010a87 43 * @param none
marvas 0:7da3ab010a87 44 * @return key number by ASCII code
marvas 0:7da3ab010a87 45 */
marvas 0:7da3ab010a87 46 uint8_t read(void);
marvas 0:7da3ab010a87 47
marvas 0:7da3ab010a87 48 protected:
marvas 0:7da3ab010a87 49 DigitalIn *k_in[4];
marvas 0:7da3ab010a87 50 DigitalOut *k_out[4];
marvas 0:7da3ab010a87 51 Ticker tk;
marvas 0:7da3ab010a87 52
marvas 0:7da3ab010a87 53 // key control
marvas 0:7da3ab010a87 54 enum State {Off_state, Off_to_on_transient, On_state, On_to_off_transient};
marvas 0:7da3ab010a87 55 volatile State key_state[4][4];
marvas 0:7da3ab010a87 56 volatile int8_t key_transent_cntr[4][4];
marvas 0:7da3ab010a87 57 void key_scan(void);
marvas 0:7da3ab010a87 58
marvas 0:7da3ab010a87 59 // buffer control
marvas 0:7da3ab010a87 60 #define BF_SIZE 20
marvas 0:7da3ab010a87 61 uint8_t read_addr;
marvas 0:7da3ab010a87 62 uint8_t write_addr;
marvas 0:7da3ab010a87 63 uint8_t buf[BF_SIZE];
marvas 0:7da3ab010a87 64 void bf_put (char dat);
marvas 0:7da3ab010a87 65 int8_t bf_get (void);
marvas 0:7da3ab010a87 66
marvas 0:7da3ab010a87 67 };
marvas 0:7da3ab010a87 68
marvas 0:7da3ab010a87 69 #endif // KEYPAD_H
marvas 0:7da3ab010a87 70