Skip to content

An Arduino library to interpret 'tap code' sent with a single button. Tap code is similar to Morse code but easier to send, learn and read while being slower.

License

Notifications You must be signed in to change notification settings

ncmreynolds/TapCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tap Code

An Arduino library to interpret 'tap code' sent with a single button. Tap code is similar to Morse code but easier to send, learn and read while being slower.

It uses a single button and stores the tapped code as a C string for comparison/printing. This library is mostly an enabling one for other projects such as the LARP hackable RFID lock prop, it's a pretty rubbish input method.

To debounce the button, it uses the EasyButton library.

In order to type you tap the button to pick out the letter at the row and column in this table (the Polybius Square), pausing slightly between the row and column. There is no letter 'K', 'C' substitutes for 'K'.

Polybius Square

A B C/K D E
F G H I J
L M N O P
Q R S T U
V W X Y Z

So to type 'HELLO' you would do the following taps on the button.

2 3

1 5

3 1

3 1

3 4

If you turn on debugging it will show the row and column selection making it easier for practice.

Methods

TapCode tapInput(uint8_t tap_button, uint8_t mode = INPUT_PULLUP);  //Declare an instance 'tapInput' and start a tap input on pin tap_button. The library controls the pin and does not need pinMode setting before this. Default is INPUT_PULLUP but this can be overriden.

void begin(uint8_t max_length = 64, uint32_t press_timeout = 1000, uint32_t word_timeout = 5000);	//Start the tap input

void read(); //Do housekeeping checking for pushes, run in loop to update the word as the button is tapped

void debug(Stream &); //Enable debug output on a Serial stream

bool changed(); //True if the current word has changed

bool finished(); //True if the word has finished

bool matches(char* stringToMatch); //True if the word matches a C string passed to the function

uint8_t length(); //Length of the tapped word

char* word(); //Returns a pointer to the tapped word

void reset(); //Reset the tapped word

Choosing the tap and word timeout can be tricky, the defaults are OK for me but may not be for you.

About

An Arduino library to interpret 'tap code' sent with a single button. Tap code is similar to Morse code but easier to send, learn and read while being slower.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages