36#include <SoftwareSerial.h>
45constexpr uint8_t kDebugSerialRxPin = 6;
46constexpr uint8_t kDebugSerialTxPin = 5;
51constexpr uint8_t kAxisThreshold = 2;
55const String kBluetoothDeviceAddress =
"0C:3D:5E:9D:80:99";
60constexpr uint32_t kBluetoothModuleSerialBaudRate = 115200;
82SoftwareSerial g_debug_serial(kDebugSerialRxPin, kDebugSerialTxPin);
110 return "Triangle(Y)";
171void Connect(Stream &bluetooth_stream,
const String &bluetooth_device_address) {
172 if (bluetooth_device_address.length() != 17 || bluetooth_device_address[2] !=
':' || bluetooth_device_address[5] !=
':' ||
173 bluetooth_device_address[8] !=
':' || bluetooth_device_address[11] !=
':' || bluetooth_device_address[14] !=
':') {
174 g_debug_serial.println(
"Error: Invalid MAC address format. Expected: XX:XX:XX:XX:XX:XX");
178 g_debug_serial.print(
"Start to connect ");
179 g_debug_serial.println(kBluetoothDeviceAddress);
183 bluetooth_stream.println(
"AT+DISCON");
188 bluetooth_stream.println(
"AT+RESET");
193 bluetooth_stream.println(
"AT+ECHO=1");
198 bluetooth_stream.println(
"AT+ROLE=0");
203 bluetooth_stream.print(
"AT+CON=");
204 bluetooth_stream.println(bluetooth_device_address);
207 g_debug_serial.println(
"Connected");
212 g_debug_serial.begin(115200);
214 Serial.begin(kBluetoothModuleSerialBaudRate);
216 Connect(Serial, kBluetoothDeviceAddress);
226 g_codex_pad_frame_decoder.Update();
228 for (
auto button : kAllButtons) {
231 if (g_codex_pad_frame_decoder.pressed(button)) {
232 g_debug_serial.print(
"Button ");
233 g_debug_serial.print(ButtonToString(button));
234 g_debug_serial.println(
": pressed");
239 else if (g_codex_pad_frame_decoder.released(button)) {
240 g_debug_serial.print(
"Button ");
241 g_debug_serial.print(ButtonToString(button));
242 g_debug_serial.println(
": released");
247 else if (g_codex_pad_frame_decoder.holding(button)) {
248 g_debug_serial.print(
"Button ");
249 g_debug_serial.print(ButtonToString(button));
250 g_debug_serial.println(
": holding");
262 g_debug_serial.print(
"L(X:");
263 g_debug_serial.print(
265 g_debug_serial.print(
", Y:");
266 g_debug_serial.print(
268 g_debug_serial.print(
"), R(X:");
269 g_debug_serial.print(
271 g_debug_serial.print(
", Y:");
272 g_debug_serial.print(
274 g_debug_serial.println(
")");