Cудя по внешнему виду и номерам ножек, это ATmega128. То есть совсем даже 8-битный микроконтроллер. Там, в принципе, больше и не надо. USB реализуется программно, производительности хватит. Мелкий 8-ногий чип — это EEPROM c SPI. Схемотехника несложная, тут вся красота должна быть в firmware.
Так оно ж все цифровое, здесь часто компактнее словами написать. Фраза типа «эта хрень подключена к MCU по SPI» достаточно точно опишет ситуацию, а даташиты позволят додумать соединения. А побочным эффектом весь этот процесс заставит понять, что происходит внутри силикона.
Лишний кусок кода или дополнительная обвязка — это вопрос персональных предпочтений. А для программного debouncing'а у вас в коде уже и так есть задел с подсчетом интервалов. Еще немного проверок там, где if ((timeRelease — timePress) > MAX_DOT_PRESS_TIME), и — voila — программная защита от дребезга готова.
А я вот такой на ибее покупал не так давно:
cgi.ebay.com/Bluetooth-serial-converter-UART-interface-/370397688731?cmd=ViewItem&pt=LH_DefaultDomain_0&hash=item563d6c339b#ht_2295wt_957
И еще надо учитывать, что кнопка — штука механическая, при нажатии возникает «дребезг контактов». Поэтому не помешал бы программный debouncing.