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.
Dependencies: mbed
one_button.h@5:9af1305f7779, 2015-04-13 (annotated)
- Committer:
- ShalajLawania
- Date:
- Mon Apr 13 08:31:37 2015 +0000
- Revision:
- 5:9af1305f7779
With save feature
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ShalajLawania | 5:9af1305f7779 | 1 | /************************************** |
| ShalajLawania | 5:9af1305f7779 | 2 | * Bluetooth Controller single key press library |
| ShalajLawania | 5:9af1305f7779 | 3 | * Author: Shalaj Lawania. |
| ShalajLawania | 5:9af1305f7779 | 4 | **************************************/ |
| ShalajLawania | 5:9af1305f7779 | 5 | |
| ShalajLawania | 5:9af1305f7779 | 6 | #include "mbed.h" |
| ShalajLawania | 5:9af1305f7779 | 7 | #include "Timers.h" |
| ShalajLawania | 5:9af1305f7779 | 8 | |
| ShalajLawania | 5:9af1305f7779 | 9 | /************************************************* |
| ShalajLawania | 5:9af1305f7779 | 10 | * Bluefruit E-Z keys assigned to LPC1786 GPIO pins |
| ShalajLawania | 5:9af1305f7779 | 11 | **************************************************/ |
| ShalajLawania | 5:9af1305f7779 | 12 | |
| ShalajLawania | 5:9af1305f7779 | 13 | DigitalOut up_key (p30); |
| ShalajLawania | 5:9af1305f7779 | 14 | DigitalOut down_key (p29); |
| ShalajLawania | 5:9af1305f7779 | 15 | DigitalOut right_key (p28); |
| ShalajLawania | 5:9af1305f7779 | 16 | DigitalOut left_key (p27); |
| ShalajLawania | 5:9af1305f7779 | 17 | DigitalOut enter_key(p5); |
| ShalajLawania | 5:9af1305f7779 | 18 | DigitalOut space_key(p6); |
| ShalajLawania | 5:9af1305f7779 | 19 | DigitalOut W_key(p22); |
| ShalajLawania | 5:9af1305f7779 | 20 | DigitalOut S_key(p11); |
| ShalajLawania | 5:9af1305f7779 | 21 | DigitalOut A_key(p23); |
| ShalajLawania | 5:9af1305f7779 | 22 | DigitalOut D_key(p8); |
| ShalajLawania | 5:9af1305f7779 | 23 | DigitalOut one_key(p13); |
| ShalajLawania | 5:9af1305f7779 | 24 | DigitalOut two_key(p14 ); |
| ShalajLawania | 5:9af1305f7779 | 25 | |
| ShalajLawania | 5:9af1305f7779 | 26 | Serial bluefruit(p9, p10); |
| ShalajLawania | 5:9af1305f7779 | 27 | InterruptIn playI(p25); |
| ShalajLawania | 5:9af1305f7779 | 28 | |
| ShalajLawania | 5:9af1305f7779 | 29 | /************************************************************************ |
| ShalajLawania | 5:9af1305f7779 | 30 | * move_type array: Stores a unique id for each move, i.e 1 for Up, 2 for Down |
| ShalajLawania | 5:9af1305f7779 | 31 | ************************************************************************/ |
| ShalajLawania | 5:9af1305f7779 | 32 | |
| ShalajLawania | 5:9af1305f7779 | 33 | char move_type[400]; //change index to increase recorded moves |
| ShalajLawania | 5:9af1305f7779 | 34 | |
| ShalajLawania | 5:9af1305f7779 | 35 | char key_ID [9]; |
| ShalajLawania | 5:9af1305f7779 | 36 | unsigned int i, k, z = 0; |
| ShalajLawania | 5:9af1305f7779 | 37 | unsigned int one_pressed, two_pressed = 0; |
| ShalajLawania | 5:9af1305f7779 | 38 | unsigned int subtractor; |
| ShalajLawania | 5:9af1305f7779 | 39 | |
| ShalajLawania | 5:9af1305f7779 | 40 | void display_move(int b, int c); |
| ShalajLawania | 5:9af1305f7779 | 41 | void play_time_stop(); |
| ShalajLawania | 5:9af1305f7779 | 42 | void press_time_stop(); |
| ShalajLawania | 5:9af1305f7779 | 43 | void two_button_controller(); |
| ShalajLawania | 5:9af1305f7779 | 44 | void one_button_controller(char m); |
| ShalajLawania | 5:9af1305f7779 | 45 | |
| ShalajLawania | 5:9af1305f7779 | 46 | /************************************************* |
| ShalajLawania | 5:9af1305f7779 | 47 | * setup() switches all play keys to off initially |
| ShalajLawania | 5:9af1305f7779 | 48 | *************************************************/ |
| ShalajLawania | 5:9af1305f7779 | 49 | |
| ShalajLawania | 5:9af1305f7779 | 50 | void setup() |
| ShalajLawania | 5:9af1305f7779 | 51 | { |
| ShalajLawania | 5:9af1305f7779 | 52 | up_key = 1; down_key = 1; left_key = 1; right_key = 1; W_key = 1; S_key = 1; A_key = 1; D_key = 1; enter_key = 1; space_key = 1; one_key = 1; two_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 53 | } |
| ShalajLawania | 5:9af1305f7779 | 54 | |
| ShalajLawania | 5:9af1305f7779 | 55 | /*********************************************************** |
| ShalajLawania | 5:9af1305f7779 | 56 | * Overloaded setup() switches all the keys off |
| ShalajLawania | 5:9af1305f7779 | 57 | * except the ones involved in the move z references |
| ShalajLawania | 5:9af1305f7779 | 58 | * Used to provide continuous playback for double key presses |
| ShalajLawania | 5:9af1305f7779 | 59 | ***********************************************************/ |
| ShalajLawania | 5:9af1305f7779 | 60 | |
| ShalajLawania | 5:9af1305f7779 | 61 | void setup(char z) |
| ShalajLawania | 5:9af1305f7779 | 62 | { |
| ShalajLawania | 5:9af1305f7779 | 63 | //if (z != 1 || z != 5 || z != 6 || z != 7 || z != 26 || z != 30 || z != 34 || z != 44) { |
| ShalajLawania | 5:9af1305f7779 | 64 | up_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 65 | //} |
| ShalajLawania | 5:9af1305f7779 | 66 | //if (z != 2 || z != 6 || z != 8 || z != 9 || z != 29 || z != 31 || z != 35 || z != 45) { |
| ShalajLawania | 5:9af1305f7779 | 67 | down_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 68 | //} |
| ShalajLawania | 5:9af1305f7779 | 69 | //if (z != 3 || z != 7 || z != 9 || z != 10 || z != 28 || z != 33 || z != 36 || z != 47) { |
| ShalajLawania | 5:9af1305f7779 | 70 | left_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 71 | //} |
| ShalajLawania | 5:9af1305f7779 | 72 | //if (z != 4 || z != 5 || z != 8 || z != 10 || z != 27 || z != 32 || z != 37 || z != 46) { |
| ShalajLawania | 5:9af1305f7779 | 73 | right_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 74 | //} |
| ShalajLawania | 5:9af1305f7779 | 75 | //if (z != 11 || z != 19 || z != 20 || z != 23 || z != 38 || z != 48) { |
| ShalajLawania | 5:9af1305f7779 | 76 | W_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 77 | //} |
| ShalajLawania | 5:9af1305f7779 | 78 | //if (z != 12 || z != 21 || z != 22 || z != 23 || z != 39 || z != 49) { |
| ShalajLawania | 5:9af1305f7779 | 79 | S_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 80 | //} |
| ShalajLawania | 5:9af1305f7779 | 81 | //if (z != 13 || z != 19 || z != 21 || z != 24 || z != 40 || z != 50) { |
| ShalajLawania | 5:9af1305f7779 | 82 | A_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 83 | //} |
| ShalajLawania | 5:9af1305f7779 | 84 | //if (z != 14 || z != 20 || z != 22 || z != 24 || z != 41 || z != 51) { |
| ShalajLawania | 5:9af1305f7779 | 85 | D_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 86 | //} |
| ShalajLawania | 5:9af1305f7779 | 87 | //if (z != 16 || z != 30 || z != 31 || z != 32 || z != 33 || z != 43 || z != 52) { |
| ShalajLawania | 5:9af1305f7779 | 88 | enter_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 89 | //} |
| ShalajLawania | 5:9af1305f7779 | 90 | //if (z != 15 || z != 26 || z != 27 || z != 28 || z != 29 || z != 42 || z != 53) { |
| ShalajLawania | 5:9af1305f7779 | 91 | space_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 92 | //} |
| ShalajLawania | 5:9af1305f7779 | 93 | //if (z != 17 || z != 25 || z != 34 || z != 35 || z != 36 || z != 37 || z != 38 || z != 39 || z != 40 || z != 41 || z != 42 || z != 43) { |
| ShalajLawania | 5:9af1305f7779 | 94 | one_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 95 | //} |
| ShalajLawania | 5:9af1305f7779 | 96 | //if (z != 18 || z != 25 || z != 44 || z != 45 || z != 46 || z != 47 || z != 48 || z != 49 || z != 50 || z != 51 || z != 52 || z != 53) { |
| ShalajLawania | 5:9af1305f7779 | 97 | two_key = 1; |
| ShalajLawania | 5:9af1305f7779 | 98 | //} |
| ShalajLawania | 5:9af1305f7779 | 99 | } |
| ShalajLawania | 5:9af1305f7779 | 100 | |
| ShalajLawania | 5:9af1305f7779 | 101 | /*********************************************************************** |
| ShalajLawania | 5:9af1305f7779 | 102 | * one_button(): If just one button is pressed call one_button_controller |
| ShalajLawania | 5:9af1305f7779 | 103 | * call two_button_controller if more than one is pressed |
| ShalajLawania | 5:9af1305f7779 | 104 | ***********************************************************************/ |
| ShalajLawania | 5:9af1305f7779 | 105 | |
| ShalajLawania | 5:9af1305f7779 | 106 | void one_button(char q) |
| ShalajLawania | 5:9af1305f7779 | 107 | { |
| ShalajLawania | 5:9af1305f7779 | 108 | if (two_pressed) { |
| ShalajLawania | 5:9af1305f7779 | 109 | two_button_controller(); |
| ShalajLawania | 5:9af1305f7779 | 110 | } |
| ShalajLawania | 5:9af1305f7779 | 111 | one_button_controller(q); |
| ShalajLawania | 5:9af1305f7779 | 112 | } |
| ShalajLawania | 5:9af1305f7779 | 113 | |
| ShalajLawania | 5:9af1305f7779 | 114 | /************************************************************* |
| ShalajLawania | 5:9af1305f7779 | 115 | * one_button_controller(): Sets one_pressed, resets press_time |
| ShalajLawania | 5:9af1305f7779 | 116 | * saves the move into move_type array |
| ShalajLawania | 5:9af1305f7779 | 117 | * stops, saves and resets wait_time |
| ShalajLawania | 5:9af1305f7779 | 118 | *************************************************************/ |
| ShalajLawania | 5:9af1305f7779 | 119 | |
| ShalajLawania | 5:9af1305f7779 | 120 | void one_button_controller(char m) |
| ShalajLawania | 5:9af1305f7779 | 121 | { |
| ShalajLawania | 5:9af1305f7779 | 122 | one_pressed = 1; |
| ShalajLawania | 5:9af1305f7779 | 123 | press_time.reset(); press_time.start(); |
| ShalajLawania | 5:9af1305f7779 | 124 | move_type[i] = m; |
| ShalajLawania | 5:9af1305f7779 | 125 | display_move(m, i); |
| ShalajLawania | 5:9af1305f7779 | 126 | wait_time.stop(); |
| ShalajLawania | 5:9af1305f7779 | 127 | if (subtractor > 0) { |
| ShalajLawania | 5:9af1305f7779 | 128 | wait_times[i] = 0; |
| ShalajLawania | 5:9af1305f7779 | 129 | } else { |
| ShalajLawania | 5:9af1305f7779 | 130 | wait_times[i] = wait_time.read_ms(); |
| ShalajLawania | 5:9af1305f7779 | 131 | } |
| ShalajLawania | 5:9af1305f7779 | 132 | pc.printf("\n\r Gap Time: %d", wait_times[i]); |
| ShalajLawania | 5:9af1305f7779 | 133 | wait_time.reset(); |
| ShalajLawania | 5:9af1305f7779 | 134 | i++; subtractor = 0; |
| ShalajLawania | 5:9af1305f7779 | 135 | } |