keypad kutuphanesi, Interruptsiz
Dependents: rtos_uygulamasi guvenlik_sistemi keypad_kullanimi lcd_kullanimi_keypad ... more
Keypad.h@0:7da3ab010a87, 2019-05-06 (annotated)
- Committer:
- marvas
- Date:
- Mon May 06 10:27:01 2019 +0000
- Revision:
- 0:7da3ab010a87
keypad kutuphanesi
Who changed what in which revision?
User | Revision | Line number | New 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 |