Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:ee21c9a5f330, 2016-10-04 (annotated)
- Committer:
- ryood
- Date:
- Tue Oct 04 12:05:27 2016 +0000
- Revision:
- 0:ee21c9a5f330
???????????
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ryood | 0:ee21c9a5f330 | 1 | /* |
| ryood | 0:ee21c9a5f330 | 2 | * aitendo 4x4 keypad Test |
| ryood | 0:ee21c9a5f330 | 3 | * |
| ryood | 0:ee21c9a5f330 | 4 | * 2016.10.04 |
| ryood | 0:ee21c9a5f330 | 5 | * |
| ryood | 0:ee21c9a5f330 | 6 | */ |
| ryood | 0:ee21c9a5f330 | 7 | #include "mbed.h" |
| ryood | 0:ee21c9a5f330 | 8 | #include "rtos.h" |
| ryood | 0:ee21c9a5f330 | 9 | |
| ryood | 0:ee21c9a5f330 | 10 | const char keypadChar [] = { |
| ryood | 0:ee21c9a5f330 | 11 | 'C', 'D', 'E', 'F', |
| ryood | 0:ee21c9a5f330 | 12 | '9', '0', 'A', 'B', |
| ryood | 0:ee21c9a5f330 | 13 | '5', '6', '7', '8', |
| ryood | 0:ee21c9a5f330 | 14 | '1', '2', '3', '4', |
| ryood | 0:ee21c9a5f330 | 15 | }; |
| ryood | 0:ee21c9a5f330 | 16 | |
| ryood | 0:ee21c9a5f330 | 17 | BusIn KeypadIn(PA_13, PA_14, PA_15, PB_7); |
| ryood | 0:ee21c9a5f330 | 18 | BusOut KeypadOut(PC_13, PA_9, PA_8, PB_10); |
| ryood | 0:ee21c9a5f330 | 19 | |
| ryood | 0:ee21c9a5f330 | 20 | //------------------------------------------------------ |
| ryood | 0:ee21c9a5f330 | 21 | // keyScan1(): 押されているキー |
| ryood | 0:ee21c9a5f330 | 22 | // return: キースキャンの結果 0..15 |
| ryood | 0:ee21c9a5f330 | 23 | // 押されていない場合は -1 |
| ryood | 0:ee21c9a5f330 | 24 | //------------------------------------------------------ |
| ryood | 0:ee21c9a5f330 | 25 | int keyScan1() |
| ryood | 0:ee21c9a5f330 | 26 | { |
| ryood | 0:ee21c9a5f330 | 27 | int i, j; |
| ryood | 0:ee21c9a5f330 | 28 | for (i = 0; i < 4; i++) { |
| ryood | 0:ee21c9a5f330 | 29 | KeypadOut[i] = 1; |
| ryood | 0:ee21c9a5f330 | 30 | for (j = 0; j < 4; j++) { |
| ryood | 0:ee21c9a5f330 | 31 | if (KeypadIn[j] == 1) { |
| ryood | 0:ee21c9a5f330 | 32 | KeypadOut[i] = 0; |
| ryood | 0:ee21c9a5f330 | 33 | return i * 4 + j; |
| ryood | 0:ee21c9a5f330 | 34 | } |
| ryood | 0:ee21c9a5f330 | 35 | } |
| ryood | 0:ee21c9a5f330 | 36 | KeypadOut[i] = 0; |
| ryood | 0:ee21c9a5f330 | 37 | } |
| ryood | 0:ee21c9a5f330 | 38 | return -1; |
| ryood | 0:ee21c9a5f330 | 39 | } |
| ryood | 0:ee21c9a5f330 | 40 | |
| ryood | 0:ee21c9a5f330 | 41 | //------------------------------------------------------ |
| ryood | 0:ee21c9a5f330 | 42 | // keyScan(): 押して離されたキー |
| ryood | 0:ee21c9a5f330 | 43 | // return: キースキャンの結果 0..15 |
| ryood | 0:ee21c9a5f330 | 44 | // 変化がない場合は -1 |
| ryood | 0:ee21c9a5f330 | 45 | //------------------------------------------------------ |
| ryood | 0:ee21c9a5f330 | 46 | int keyScan() |
| ryood | 0:ee21c9a5f330 | 47 | { |
| ryood | 0:ee21c9a5f330 | 48 | static int keyBuff; |
| ryood | 0:ee21c9a5f330 | 49 | int kv, kvv; |
| ryood | 0:ee21c9a5f330 | 50 | |
| ryood | 0:ee21c9a5f330 | 51 | // チャタリング防止 |
| ryood | 0:ee21c9a5f330 | 52 | kv = keyScan1(); |
| ryood | 0:ee21c9a5f330 | 53 | Thread::wait(10); |
| ryood | 0:ee21c9a5f330 | 54 | kvv = keyScan1(); |
| ryood | 0:ee21c9a5f330 | 55 | |
| ryood | 0:ee21c9a5f330 | 56 | if (kv == kvv) { |
| ryood | 0:ee21c9a5f330 | 57 | if (kv != keyBuff) { |
| ryood | 0:ee21c9a5f330 | 58 | keyBuff = kv; |
| ryood | 0:ee21c9a5f330 | 59 | return kv; |
| ryood | 0:ee21c9a5f330 | 60 | } |
| ryood | 0:ee21c9a5f330 | 61 | } |
| ryood | 0:ee21c9a5f330 | 62 | return -1; |
| ryood | 0:ee21c9a5f330 | 63 | } |
| ryood | 0:ee21c9a5f330 | 64 | |
| ryood | 0:ee21c9a5f330 | 65 | int main() |
| ryood | 0:ee21c9a5f330 | 66 | { |
| ryood | 0:ee21c9a5f330 | 67 | printf("\r\n\r\n*** RTOS 4x4 Keypad Test ***\r\n"); |
| ryood | 0:ee21c9a5f330 | 68 | |
| ryood | 0:ee21c9a5f330 | 69 | KeypadIn.mode(PullDown); |
| ryood | 0:ee21c9a5f330 | 70 | |
| ryood | 0:ee21c9a5f330 | 71 | for (int i = 0; i < 4; i++) { |
| ryood | 0:ee21c9a5f330 | 72 | KeypadOut[i] = 0; |
| ryood | 0:ee21c9a5f330 | 73 | } |
| ryood | 0:ee21c9a5f330 | 74 | |
| ryood | 0:ee21c9a5f330 | 75 | while (true) { |
| ryood | 0:ee21c9a5f330 | 76 | int v = keyScan(); |
| ryood | 0:ee21c9a5f330 | 77 | if (v != -1) { |
| ryood | 0:ee21c9a5f330 | 78 | printf("%c", keypadChar[v]); |
| ryood | 0:ee21c9a5f330 | 79 | } |
| ryood | 0:ee21c9a5f330 | 80 | } |
| ryood | 0:ee21c9a5f330 | 81 | } |