diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4a7d51a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 CodexPad
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.zh-CN.md b/README.zh-CN.md
new file mode 100644
index 0000000..9aa7d84
--- /dev/null
+++ b/README.zh-CN.md
@@ -0,0 +1,9 @@
+# 导航
+
+1. [CodexPad-S10手柄控制示例:AI-VOX3开发板示例说明](examples_description_ai_vox3_.zh-CN.md)
+
+2. [CodexPad-S10手柄控制示例:BLE-UNO开发板示例说明](examples_description_ble_uno.zh-CN.md)
+
+3. [CodexPad-S10手柄控制示例:MAKER-ESP32开发板示例说明](examples_description_maker_esp32.zh-CN.md)
+
+4. [CodexPad-S10手柄控制示例:MAKER-ESP32-PRO开发板示例说明](examples_description_maker_esp32_pro.zh-CN.md)
diff --git a/assets/images/hardware_wiring/ai_vox3_dc_motor.png b/assets/images/hardware_wiring/ai_vox3_dc_motor.png
new file mode 100644
index 0000000..5272134
Binary files /dev/null and b/assets/images/hardware_wiring/ai_vox3_dc_motor.png differ
diff --git a/assets/images/hardware_wiring/ai_vox3_encoder_motor.png b/assets/images/hardware_wiring/ai_vox3_encoder_motor.png
new file mode 100644
index 0000000..f15739e
Binary files /dev/null and b/assets/images/hardware_wiring/ai_vox3_encoder_motor.png differ
diff --git a/assets/images/hardware_wiring/ai_vox3_encoder_motor_servo.png b/assets/images/hardware_wiring/ai_vox3_encoder_motor_servo.png
new file mode 100644
index 0000000..ba481dd
Binary files /dev/null and b/assets/images/hardware_wiring/ai_vox3_encoder_motor_servo.png differ
diff --git a/assets/images/hardware_wiring/ai_vox3_servo.png b/assets/images/hardware_wiring/ai_vox3_servo.png
new file mode 100644
index 0000000..b244f29
Binary files /dev/null and b/assets/images/hardware_wiring/ai_vox3_servo.png differ
diff --git a/assets/images/hardware_wiring/ble_uno_dc_motor.png b/assets/images/hardware_wiring/ble_uno_dc_motor.png
new file mode 100644
index 0000000..fee91dd
Binary files /dev/null and b/assets/images/hardware_wiring/ble_uno_dc_motor.png differ
diff --git a/assets/images/hardware_wiring/ble_uno_encoder_motor.png b/assets/images/hardware_wiring/ble_uno_encoder_motor.png
new file mode 100644
index 0000000..31d9be9
Binary files /dev/null and b/assets/images/hardware_wiring/ble_uno_encoder_motor.png differ
diff --git a/assets/images/hardware_wiring/ble_uno_encoder_motor_servo.png b/assets/images/hardware_wiring/ble_uno_encoder_motor_servo.png
new file mode 100644
index 0000000..5aed2ae
Binary files /dev/null and b/assets/images/hardware_wiring/ble_uno_encoder_motor_servo.png differ
diff --git a/assets/images/hardware_wiring/ble_uno_servo.png b/assets/images/hardware_wiring/ble_uno_servo.png
new file mode 100644
index 0000000..2f0e18f
Binary files /dev/null and b/assets/images/hardware_wiring/ble_uno_servo.png differ
diff --git a/assets/images/hardware_wiring/maker_esp32_dc_motor.png b/assets/images/hardware_wiring/maker_esp32_dc_motor.png
new file mode 100644
index 0000000..2f38877
Binary files /dev/null and b/assets/images/hardware_wiring/maker_esp32_dc_motor.png differ
diff --git a/assets/images/hardware_wiring/maker_esp32_pro_dc_motor.png b/assets/images/hardware_wiring/maker_esp32_pro_dc_motor.png
new file mode 100644
index 0000000..26dec82
Binary files /dev/null and b/assets/images/hardware_wiring/maker_esp32_pro_dc_motor.png differ
diff --git a/assets/images/hardware_wiring/maker_esp32_pro_encoder_motor.png b/assets/images/hardware_wiring/maker_esp32_pro_encoder_motor.png
new file mode 100644
index 0000000..360d31a
Binary files /dev/null and b/assets/images/hardware_wiring/maker_esp32_pro_encoder_motor.png differ
diff --git a/assets/images/hardware_wiring/maker_esp32_pro_encoder_motor_servo.png b/assets/images/hardware_wiring/maker_esp32_pro_encoder_motor_servo.png
new file mode 100644
index 0000000..45ebc2b
Binary files /dev/null and b/assets/images/hardware_wiring/maker_esp32_pro_encoder_motor_servo.png differ
diff --git a/assets/images/hardware_wiring/maker_esp32_pro_servo.png b/assets/images/hardware_wiring/maker_esp32_pro_servo.png
new file mode 100644
index 0000000..b92421c
Binary files /dev/null and b/assets/images/hardware_wiring/maker_esp32_pro_servo.png differ
diff --git a/assets/images/hardware_wiring/maker_esp32_servo.png b/assets/images/hardware_wiring/maker_esp32_servo.png
new file mode 100644
index 0000000..2a9340d
Binary files /dev/null and b/assets/images/hardware_wiring/maker_esp32_servo.png differ
diff --git a/assets/images/install_lib/add_zip.png b/assets/images/install_lib/add_zip.png
new file mode 100644
index 0000000..047c394
Binary files /dev/null and b/assets/images/install_lib/add_zip.png differ
diff --git a/assets/images/install_lib/install_codexpad_frame_decoder_library.png b/assets/images/install_lib/install_codexpad_frame_decoder_library.png
new file mode 100644
index 0000000..d2517e9
Binary files /dev/null and b/assets/images/install_lib/install_codexpad_frame_decoder_library.png differ
diff --git a/assets/images/install_lib/install_codexpad_library.png b/assets/images/install_lib/install_codexpad_library.png
new file mode 100644
index 0000000..adf40c9
Binary files /dev/null and b/assets/images/install_lib/install_codexpad_library.png differ
diff --git a/assets/images/install_lib/install_dependencies_dialog.png b/assets/images/install_lib/install_dependencies_dialog.png
new file mode 100644
index 0000000..e6e9305
Binary files /dev/null and b/assets/images/install_lib/install_dependencies_dialog.png differ
diff --git a/examples_description_ai_vox3_.zh-CN.md b/examples_description_ai_vox3_.zh-CN.md
new file mode 100644
index 0000000..6ed997d
--- /dev/null
+++ b/examples_description_ai_vox3_.zh-CN.md
@@ -0,0 +1,506 @@
+# CodexPad-S10手柄控制示例:AI-VOX3开发板示例说明
+
+本文档针对**AI-VOX3开发板**,提供使用**CodexPad-S10手柄**进行无线控制的基础示例。示例涵盖直流电机、编码电机、舵机以及编码电机与舵机的组合控制。对于电机驱动,则是搭配使用MD40模块进行驱动。用户可根据需求选择对应的示例进行学习和开发。
+
+## 准备工作
+
+### 熟悉产品文档
+
+- 详细阅读CodexPad-S10产品手册:👉 [产品详情](https://github.com/CodexPad/codex_pad_s10/blob/main/README.zh-CN.md#codexpad-s10),全面了解硬件特性、熟悉手柄按键摇杆布局、功能定义、指示灯状态以及开关机操作等基本信息,。
+
+- 详细阅读AI-VOX3开发板的产品手册:👉 [产品详情](https://emakefun.github.io/emakefun-docsify/#/zh-cn/esp32/ai-vox3/ai-vox3_zh-cn),熟悉引脚分布布局、功能定义,如何使用等基本信息。
+
+- 详细阅读MD40模块的产品手册:👉 [产品详情](https://emakefun.github.io/emakefun-docsify/#/zh-cn/ph2.0_sensors/actuators/md40/md40),熟悉驱动方式、功能定义,如何使用等基本信息。
+
+### 获取并记录手柄**Bluetooth Device Address(BD_ADDR)**
+
+> **⚠️ 重要提示**:示例程序均是是通过 **Bluetooth Device Address(BD_ADDR)** 进行连接。**编程时,必须在代码明确指定您手柄的Bluetooth Device Address(BD_ADDR)。**
+
+请参考产品手册中提供的方法,获取您手柄的**Bluetooth Device Address(BD_ADDR)**。其格式通常为 `"E4:66:E5:A2:24:5D"`(由0-9、A-F的字符组成,冒号为半角)。请妥善记录此信息,后续需要在代码为您自己手柄的实际**Bluetooth Device Address(BD_ADDR)**。
+
+### 开启手柄并进入待连接状态
+
+- 将手柄开机,手柄开机后会自动处于蓝牙可被发现的**待连接状态**,此时手柄指示灯应呈现**慢闪状态(约每秒闪烁一次)**。
+
+### 安装ESP32开发板管理器
+
+1. 在Arduino IDE中,打开**工具** > **开发板** > **开发板管理器...**。
+
+2. 在搜索框中输入`esp32`,找到并安装**ESP32 by Espressif Systems**。
+
+3. 安装完成后,在**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`。
+
+4. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口。
+
+### 安装CodexPad库
+
+1. **打开Arduino IDE库管理器**
+
+ - 菜单栏:**工具** → **管理库...**
+
+ - 快捷键:`Ctrl+Shift+I`(Windows/Linux)或 `Cmd+Shift+I`(Mac)
+
+2. **搜索并安装**
+
+ - 在搜索框中输入:`CodexPad`
+
+ - 找到CodexPad库
+
+ - **确保在下拉菜单中选择最新版本**
+
+ - 点击**安装**按钮
+
+ 
+
+ > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。
+
+3. **安装依赖库**
+
+ - 当出现依赖库安装对话框时,选择**全部安装**
+
+ 
+
+> **⚠️ 重要版本说明**
+> 本文档中的截图可能显示较旧版本。**请始终安装以下两者的最新版本**:
+>
+> - `CodexPad`库
+> - `NimBLE-Arduino`依赖库
+>
+> 如果您跳过了依赖库安装,请手动安装最新版`NimBLE-Arduino`:
+>
+> 1. 再次打开库管理器
+> 2. 搜索`NimBLE-Arduino`
+> 3. 在下拉菜单中**选择最新版本**
+> 4. 点击安装
+
+## 示例程序下载
+
+通过此链接下载示例程序:点击此处下载示例程序
+
+示例程序下载后,将其解压到不包含中文、空格等特殊字符的路径目录下。
+
+## 示例说明
+
+AI-VOX3开发板示例包含以下4个示例:
+
+| 示例 | 功能说明 | 示例路径 |
+| :--- | :--- | :--- |
+| [直流电机控制示例](#直流电机控制示例) | 控制4个直流电机 | `ai_vox3/base/dc_motor/dc_motor.ino` |
+| [编码电机控制示例](#编码电机控制示例) | 控制4个编码电机(含编码器反馈) | `ai_vox3/base/encoder_motor/encoder_motor.ino` |
+| [舵机控制示例](#舵机控制示例) | 控制4个舵机 | `ai_vox3/base/servo/servo.ino` |
+| [编码电机和舵机综合控制示例](#编码电机和舵机综合控制示例) | 编码电机 + 舵机综合控制 | `ai_vox3/base/encoder_motor_and_servo/encoder_motor_and_servo.ino` |
+
+### 直流电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个直流电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| AI-VOX3开发板 | 1 |
+| AI-VOX3扩展板 | 1 |
+| MD40模块 | 1 |
+| 直流电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+#### MD40驱动依赖库安装
+
+1. 下载MD40驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ai_vox3/base/dc_motor/`目录;
+
+3. 选择`dc_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+1. 将AI-VOX3开发板与AI-VOX3扩展板连接;
+
+2. 将直流电机与MD40模块连接:
+
+ | 直流电机 | MD40 |
+ | :--- | :--- |
+ | 4个直流电机 | M0-M3直流电机口 |
+
+3. 将MD40模块与AI-VOX3扩展板连接:
+
+ | MD40 | AI-VOX3 |
+ | :--- | :--- |
+ | SCL | 12 (SCL) |
+ | SDA | 13 (SDA) |
+ | 5V | 5V |
+ | G | G |
+
+4. 将6V-16V外接电源连接到MD40模块的VIN/G接口。
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个直流电机同时正转 |
+ | 下方向 | 按住(holding) | 4个直流电机同时反转 |
+ | Cross | 按住(holding) | 4个直流电机同时刹车 |
+ | 无操作 | - | 4个直流电机停止 |
+
+ 同时按住上方向和下方向按钮时无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个直流电机都会刹车。
+
+### 编码电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个编码电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| AI-VOX3开发板 | 1 |
+| AI-VOX3扩展板 | 1 |
+| MD40模块 | 1 |
+| 编码电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:** 示例中的编码电机默认参数为:每转脉冲数(PPR)12,减速比90,相位关系为B相领先于A相。如果使用的编码电机的参数不同,根据实际情况,请在代码中修改对应参数值。
+
+#### MD40驱动依赖库安装
+
+1. 下载MD40驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ai_vox3/base/encoder_motor/`目录;
+
+3. 选择`encoder_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+1. 将AI-VOX3开发板与AI-VOX3扩展板连接;
+
+2. 将编码电机与MD40模块连接:
+
+ | 编码电机 | MD40 |
+ | :--- | :--- |
+ | 4个编码电机 | E0-E3编码电机口 |
+
+3. 将MD40模块与AI-VOX3扩展板连接:
+
+ | MD40 | AI-VOX3扩展板 |
+ | :--- | :--- |
+ | SCL | 12 (SCL) |
+ | SDA | 13 (SDA) |
+ | 5V | 5V |
+ | G | G |
+
+4. 将6V-16V外接电源连接到MD40模块的VIN/G接口。
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个编码电机同时正转 |
+ | 下方向 | 按住(holding) | 4个编码电机同时反转 |
+ | Cross | 按住(holding) | 4个编码电机同时刹车 |
+ | 无操作 | - | 4个编码电机停止 |
+
+ 同时按住上方向和下方向按钮时,编码电机无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个编码电机都会刹车。
+
+### 舵机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个舵机的转动角度。通过手柄的**Square/Triangle/Circle**按钮将4个舵机同时旋转到预设角度(0°/90°/180°)。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| AI-VOX3开发板 | 1 |
+| AI-VOX3扩展板 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**SG90舵机也可改为使用MG90S舵机。
+
+#### 舵机驱动依赖库安装
+
+1. 下载舵机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ai_vox3/base/servo/`目录;
+
+3. 选择`servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+1. 将AI-VOX3开发板与AI-VOX3扩展板连接;
+
+2. 将4个舵机与AI-VOX3扩展板连接:
+
+ | 舵机 | AI-VOX3扩展板 |
+ | :--- | :--- |
+ | 1号舵机 | 42 |
+ | 2号舵机 | 43 |
+ | 3号舵机 | 44 |
+ | 4号舵机 | 48 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。
+
+### 编码电机和舵机综合控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个编码电机的运行状态以及4个舵机的转动角度。编码电机控制和舵机控制互不干扰,可同时操作。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| AI-VOX3开发板 | 1 |
+| AI-VOX3扩展板 | 1 |
+| MD40模块 | 1 |
+| 编码电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**
+>
+> 1. 示例中的编码电机默认参数为:每转脉冲数(PPR)12,减速比90,相位关系为B相领先于A相。如果使用的编码电机的参数不同,根据实际情况,请在代码中修改对应参数值。
+>
+> 2. SG90舵机也可改为使用MG90S舵机。
+
+#### 依赖库安装
+
+##### MD40驱动依赖库安装
+
+1. 下载MD40驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+##### 舵机驱动依赖库安装
+
+1. 下载舵机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ai_vox3/base/encoder_motor_and_servo/`目录;
+
+3. 选择`encoder_motor_and_servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+1. 将AI-VOX3开发板与AI-VOX3扩展板连接;
+
+2. 将编码电机与MD40模块连接:
+
+ | 编码电机 | MD40 |
+ | :--- | :--- |
+ | 4个编码电机 | E0-E3编码电机口 |
+
+3. 将MD40模块与AI-VOX3扩展板连接:
+
+ | MD40 | AI-VOX3扩展板 |
+ | :--- | :--- |
+ | SCL | 12 (SCL) |
+ | SDA | 13 (SDA) |
+ | 5V | 5V |
+ | G | G |
+
+4. 将4个舵机与AI-VOX3扩展板连接:
+
+ | 舵机 | AI-VOX3扩展板 |
+ | :--- | :--- |
+ | 1号舵机 | 42 |
+ | 2号舵机 | 43 |
+ | 3号舵机 | 44 |
+ | 4号舵机 | 48 |
+
+5. 将6V-16V外接电源连接到MD40模块的VIN/G接口。
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个编码电机同时正转 |
+ | 下方向 | 按住(holding) | 4个编码电机同时反转 |
+ | Cross | 按住(holding) | 4个编码电机同时刹车 |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。
diff --git a/examples_description_ble_uno.zh-CN.md b/examples_description_ble_uno.zh-CN.md
new file mode 100644
index 0000000..ea3db86
--- /dev/null
+++ b/examples_description_ble_uno.zh-CN.md
@@ -0,0 +1,460 @@
+# CodexPad-S10手柄控制示例:BLE-UNO开发板示例说明
+
+本文档针对**BLE-UNO开发板**,搭配**MotorDriverBoard V5.2驱动板**,提供使用**CodexPad-S10手柄**进行无线控制的基础示例。示例涵盖直流电机、编码电机、舵机以及编码电机与舵机的组合控制。用户可根据需求选择对应的示例进行学习和开发。
+
+## 准备工作
+
+### 熟悉产品文档
+
+- 详细阅读CodexPad-S10产品手册:👉 [产品详情](https://github.com/CodexPad/codex_pad_s10/blob/main/README.zh-CN.md#codexpad-s10),全面了解硬件特性、熟悉手柄按键摇杆布局、功能定义、指示灯状态以及开关机操作等基本信息。
+
+- 详细阅读BLE-UNO开发板的产品手册:👉 [产品详情](https://emakefun.github.io/emakefun-docsify/#/zh-cn/arduino_products/uno/ble-uno/ble_uno),熟悉如何使用、如何进行连接,以及相应的AT指令等基本信息。
+
+- 详细阅读MotorDriverBoard V5.2驱动板的产品手册:👉 [产品详情](https://emakefun.github.io/emakefun-docsify/#/zh-cn/arduino_products/uno/motor_driver_board/MotorDriverBoard),熟悉驱动方式、功能定义,如何使用等基本信息。
+
+### 获取并记录手柄**Bluetooth Device Address(BD_ADDR)**
+
+> **⚠️ 重要提示**:示例程序均是是通过 **Bluetooth Device Address(BD_ADDR)** 进行连接。**编程时,必须在代码明确指定您手柄的Bluetooth Device Address(BD_ADDR)。**
+
+请参考产品手册中提供的方法,获取您手柄的**Bluetooth Device Address(BD_ADDR)**。其格式通常为 `"E4:66:E5:A2:24:5D"`(由0-9、A-F的字符组成,冒号为半角)。请妥善记录此信息,后续需要在代码为您自己手柄的实际**Bluetooth Device Address(BD_ADDR)**。
+
+### 开启手柄并进入待连接状态
+
+- 将手柄开机,手柄开机后会自动处于蓝牙可被发现的**待连接状态**,此时手柄指示灯应呈现**慢闪状态(约每秒闪烁一次)**。
+
+### 安装CodexPadFrameDecoder库
+
+1. **打开Arduino IDE库管理器**
+
+ - 菜单栏:**工具** → **管理库...**
+
+ - 快捷键:`Ctrl+Shift+I`(Windows/Linux)或 `Cmd+Shift+I`(Mac)
+
+2. **搜索并安装**
+
+ - 在搜索框中输入:`CodexPadFrameDecoder`
+
+ - 找到CodexPadFrameDecoder库
+
+ - **确保在下拉菜单中选择最新版本**
+
+ - 点击**安装**按钮
+
+ 
+
+ > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。
+
+### 安装MotorDriverBoard驱动库
+
+1. 下载电机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+## 示例程序下载
+
+通过此链接下载示例程序:点击此处下载示例程序
+
+示例程序下载后,将其解压到不包含中文、空格等特殊字符的路径目录下。
+
+## 示例说明
+
+BLE-UNO开发板示例包含以下4个示例:
+
+| 示例 | 功能说明 | 示例路径 |
+| :--- | :--- | :--- |
+| [直流电机控制示例](#直流电机控制示例) | 控制4个直流电机 | `ble_uno/base/dc_motor/dc_motor.ino` |
+| [编码电机控制示例](#编码电机控制示例) | 控制4个编码电机 | `ble_uno/base/encoder_motor/encoder_motor.ino` |
+| [舵机控制示例](#舵机控制示例) | 控制4个舵机 | `ble_uno/base/servo/servo.ino` |
+| [编码电机和舵机综合控制示例](#编码电机和舵机综合控制示例) | 编码电机 + 舵机综合控制 | `ble_uno/base/encoder_motor_and_servo/encoder_motor_and_servo.ino` |
+
+> **⚠️ 关于调试输出**
+>
+> 由于BLE-UNO的硬件串口(D0/D1)已被蓝牙模块占用,而Arduino常用的`SoftwareSerial`软件串口库与本示例依赖的MotorDriverBoard驱动库存在冲突,两者无法在BLE-UNO (AVR架构)上同时使用。
+>
+> 因此,本示例为了确保电机驱动功能的稳定性,**并不包含任何串口调试输出**。
+>
+> **建议的调试方法**:
+>
+> - 使用**LED指示灯**来显示不同的程序状态。
+> - 使用**蜂鸣器**发出不同频率的声音来辅助调试。
+
+### 直流电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个直流电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| BLE-UNO开发板 | 1 |
+| MotorDriverBoard V5.2驱动板 | 1 |
+| 直流电机 | 4 |
+| 7V-12V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ble_uno/base/dc_motor/`目录;
+
+3. 选择`dc_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要根据您实际情况修改以下两项配置:
+
+**1. CodexPad-S10手柄Bluetooth Device Address(BD_ADDR)信息**
+
+需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+**2. BLE-UNO开发板的蓝牙模块的串口波特率**
+
+BLE‑UNO开发板通过串口与蓝牙模块通信,示例代码中默认的串口波特率为**115200**,如果您修改了BLE-UNO开发板的蓝牙模块的串口波特率,请在代码中找到以下常量并修改为对应值:
+
+```cpp
+// 与蓝牙模块通信的串口波特率(请查阅模块数据手册,替换为模块对应的波特率)。
+// The serial port baud rate for communication with the Bluetooth module (please refer to the module data manual,
+// replace with the corresponding baud rate for the module).
+constexpr uint32_t kBluetoothModuleSerialBaudRate = 115200;
+```
+
+#### 硬件接线
+
+1. 将BLE-UNO开发板与MotorDriverBoard V5.2驱动板连接;
+
+2. 将直流电机与MotorDriverBoard V5.2驱动板连接:
+
+ | 直流电机 | MotorDriverBoard |
+ | :--- | :--- |
+ | 4个直流电机 | M1-M4直流电机口 |
+
+3. 将7V-12V外接电源连接到BLE-UNO的DC电源接口。
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`Arduino Uno`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个直流电机同时正转 |
+ | 下方向 | 按住(holding) | 4个直流电机同时反转 |
+ | Cross | 按住(holding) | 4个直流电机同时刹车 |
+ | 无操作 | - | 4个直流电机停止 |
+
+ 同时按住上方向和下方向按钮时无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个直流电机都会刹车。
+
+### 编码电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个编码电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| BLE-UNO开发板 | 1 |
+| MotorDriverBoard V5.2驱动板 | 1 |
+| 编码电机 | 4 |
+| 7V-12V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:** 示例中的编码电机默认参数为:每转脉冲数(PPR)12,减速比90,相位关系为B相领先于A相。如果使用的编码电机的参数不同,根据实际情况,请在代码中修改对应参数值。
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ble_uno/base/encoder_motor/`目录;
+
+3. 选择`encoder_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要根据您实际情况修改以下两项配置:
+
+**1. CodexPad-S10手柄Bluetooth Device Address(BD_ADDR)信息**
+
+需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+**2. BLE-UNO开发板的蓝牙模块的串口波特率**
+
+BLE‑UNO开发板通过串口与蓝牙模块通信,示例代码中默认的串口波特率为**115200**,如果您修改了BLE-UNO开发板的蓝牙模块的串口波特率,请在代码中找到以下常量并修改为对应值:
+
+```cpp
+// 与蓝牙模块通信的串口波特率(请查阅模块数据手册,替换为模块对应的波特率)。
+// The serial port baud rate for communication with the Bluetooth module (please refer to the module data manual,
+// replace with the corresponding baud rate for the module).
+constexpr uint32_t kBluetoothModuleSerialBaudRate = 115200;
+```
+
+#### 硬件接线
+
+1. 将BLE-UNO开发板与MotorDriverBoard V5.2驱动板连接;
+
+2. 将编码电机与MotorDriverBoard V5.2驱动板连接:
+
+ | 编码电机 | MotorDriverBoard |
+ | :--- | :--- |
+ | 4个编码电机 | E1-E4编码电机口 |
+
+3. 将7V-12V外接电源连接到BLE-UNO的DC电源接口。
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个编码电机同时正转 |
+ | 下方向 | 按住(holding) | 4个编码电机同时反转 |
+ | Cross | 按住(holding) | 4个编码电机同时刹车 |
+ | 无操作 | - | 4个编码电机停止 |
+
+ 同时按住上方向和下方向按钮时,编码电机无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个编码电机都会刹车。
+
+### 舵机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个舵机的转动角度。通过手柄的**Square/Triangle/Circle**按钮将4个舵机同时旋转到预设角度(0°/90°/180°)。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| BLE-UNO开发板 | 1 |
+| MotorDriverBoard V5.2驱动板 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**SG90舵机也可改为使用MG90S舵机。
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ble_uno/base/servo/`目录;
+
+3. 选择`servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要根据您实际情况修改以下两项配置:
+
+**1. CodexPad-S10手柄Bluetooth Device Address(BD_ADDR)信息**
+
+需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+**2. BLE-UNO开发板的蓝牙模块的串口波特率**
+
+BLE‑UNO开发板通过串口与蓝牙模块通信,示例代码中默认的串口波特率为**115200**,如果您修改了BLE-UNO开发板的蓝牙模块的串口波特率,请在代码中找到以下常量并修改为对应值:
+
+```cpp
+// 与蓝牙模块通信的串口波特率(请查阅模块数据手册,替换为模块对应的波特率)。
+// The serial port baud rate for communication with the Bluetooth module (please refer to the module data manual,
+// replace with the corresponding baud rate for the module).
+constexpr uint32_t kBluetoothModuleSerialBaudRate = 115200;
+```
+
+#### 硬件接线
+
+1. 将BLE-UNO开发板与MotorDriverBoard V5.2驱动板连接;
+
+2. 将4个舵机与MotorDriverBoard V5.2驱动板连接:
+
+ | 舵机 | MotorDriverBoard |
+ | :--- | :--- |
+ | 1号舵机 | S1 |
+ | 2号舵机 | S2 |
+ | 3号舵机 | S3 |
+ | 4号舵机 | S4 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`Arduino Uno`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。
+
+### 编码电机和舵机综合控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个编码电机的运行状态以及4个舵机的转动角度。编码电机控制和舵机控制互不干扰,可同时操作。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| BLE-UNO开发板 | 1 |
+| MotorDriverBoard V5.2驱动板 | 1 |
+| 编码电机 | 4 |
+| 7V-12V外接电源 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**
+>
+> 1. 示例中的编码电机默认参数为:每转脉冲数(PPR)12,减速比90,相位关系为B相领先于A相。如果使用的编码电机的参数不同,根据实际情况,请在代码中修改对应参数值。
+>
+> 2. SG90舵机也可改为使用MG90S舵机。
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`ble_uno/base/encoder_motor_and_servo/`目录;
+
+3. 选择`encoder_motor_and_servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要根据您实际情况修改以下两项配置:
+
+**1. CodexPad-S10手柄Bluetooth Device Address(BD_ADDR)信息**
+
+需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+**2. BLE-UNO开发板的蓝牙模块的串口波特率**
+
+BLE‑UNO开发板通过串口与蓝牙模块通信,示例代码中默认的串口波特率为**115200**,如果您修改了BLE-UNO开发板的蓝牙模块的串口波特率,请在代码中找到以下常量并修改为对应值:
+
+```cpp
+// 与蓝牙模块通信的串口波特率(请查阅模块数据手册,替换为模块对应的波特率)。
+// The serial port baud rate for communication with the Bluetooth module (please refer to the module data manual,
+// replace with the corresponding baud rate for the module).
+constexpr uint32_t kBluetoothModuleSerialBaudRate = 115200;
+```
+
+#### 硬件接线
+
+1. 将BLE-UNO开发板与MotorDriverBoard V5.2驱动板连接;
+
+2. 将编码电机与MotorDriverBoard V5.2驱动板连接:
+
+ | 编码电机 | MotorDriverBoard |
+ | :--- | :--- |
+ | 4个编码电机 | E1-E4编码电机口 |
+
+3. 将4个舵机与MotorDriverBoard V5.2驱动板连接:
+
+ | 舵机 | MotorDriverBoard |
+ | :--- | :--- |
+ | 1号舵机 | S1 |
+ | 2号舵机 | S2 |
+ | 3号舵机 | S3 |
+ | 4号舵机 | S4 |
+
+4. 将7V-12V外接电源连接到BLE-UNO的DC电源接口。
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32S3 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个编码电机同时正转 |
+ | 下方向 | 按住(holding) | 4个编码电机同时反转 |
+ | Cross | 按住(holding) | 4个编码电机同时刹车 |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。
diff --git a/examples_description_maker_esp32.zh-CN.md b/examples_description_maker_esp32.zh-CN.md
new file mode 100644
index 0000000..39b6df6
--- /dev/null
+++ b/examples_description_maker_esp32.zh-CN.md
@@ -0,0 +1,251 @@
+# CodexPad-S10手柄控制示例:MAKER-ESP32开发板示例说明
+
+本文档针对**MAKER-ESP32开发板**,提供使用**CodexPad-S10手柄**进行无线控制的基础示例。示例涵盖直流电机、编码电机、舵机以及编码电机与舵机的组合控制。用户可根据需求选择对应的示例进行学习和开发。
+
+## 准备工作
+
+### 熟悉产品文档
+
+- 详细阅读CodexPad-S10产品手册:👉 [产品详情](https://github.com/CodexPad/codex_pad_s10/blob/main/README.zh-CN.md#codexpad-s10),全面了解硬件特性、熟悉手柄按键摇杆布局、功能定义、指示灯状态以及开关机操作等基本信息。
+
+- 详细阅读MAKER-ESP32开发板的产品手册:👉 [产品详情](https://emakefun.github.io/emakefun-docsify/#/zh-cn/esp32/maker_esp32/maker_esp32),熟悉引脚分布布局、功能定义,如何使用等基本信息。
+
+### 获取并记录手柄**Bluetooth Device Address(BD_ADDR)**
+
+> **⚠️ 重要提示**:示例程序均是是通过 **Bluetooth Device Address(BD_ADDR)** 进行连接。**编程时,必须在代码明确指定您手柄的Bluetooth Device Address(BD_ADDR)。**
+
+请参考产品手册中提供的方法,获取您手柄的**Bluetooth Device Address(BD_ADDR)**。其格式通常为 `"E4:66:E5:A2:24:5D"`(由0-9、A-F的字符组成,冒号为半角)。请妥善记录此信息,后续需要在代码为您自己手柄的实际**Bluetooth Device Address(BD_ADDR)**。
+
+### 开启手柄并进入待连接状态
+
+- 将手柄开机,手柄开机后会自动处于蓝牙可被发现的**待连接状态**,此时手柄指示灯应呈现**慢闪状态(约每秒闪烁一次)**。
+
+### 安装ESP32开发板管理器
+
+1. 在Arduino IDE中,打开**工具** > **开发板** > **开发板管理器...**。
+
+2. 在搜索框中输入`esp32`,找到并安装**ESP32 by Espressif Systems**。
+
+3. 安装完成后,在**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`。
+
+4. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口。
+
+### 安装CodexPad库
+
+1. **打开Arduino IDE库管理器**
+
+ - 菜单栏:**工具** → **管理库...**
+
+ - 快捷键:`Ctrl+Shift+I`(Windows/Linux)或 `Cmd+Shift+I`(Mac)
+
+2. **搜索并安装**
+
+ - 在搜索框中输入:`CodexPad`
+
+ - 找到CodexPad库
+
+ - **确保在下拉菜单中选择最新版本**
+
+ - 点击 **安装** 按钮
+
+ 
+
+ > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。
+
+3. **安装依赖库**
+
+ - 当出现依赖库安装对话框时,选择**全部安装**
+
+ 
+
+> **⚠️ 重要版本说明**
+> 本文档中的截图可能显示较旧版本。**请始终安装以下两者的最新版本**:
+>
+> - `CodexPad`库
+> - `NimBLE-Arduino`依赖库
+>
+> 如果您跳过了依赖库安装,请手动安装最新版`NimBLE-Arduino`:
+>
+> 1. 再次打开库管理器
+> 2. 搜索`NimBLE-Arduino`
+> 3. 在下拉菜单中**选择最新版本**
+> 4. 点击安装
+
+## 示例程序下载
+
+通过此链接下载示例程序:点击下载示例程序
+
+示例程序下载后,将其解压到不包含中文、空格等特殊字符的路径目录下。
+
+## 示例说明
+
+MAKER-ESP32开发板示例包含以下2个示例:
+
+| 示例 | 功能说明 | 示例路径 |
+| :--- | :--- | :--- |
+| [直流电机控制示例](#直流电机控制示例) | 控制4个直流电机 | `maker_esp32/base/dc_motor/dc_motor.ino` |
+| [舵机控制示例](#舵机控制示例) | 控制4个舵机 | `maker_esp32/base/servo/servo.ino` |
+
+### 直流电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个直流电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| MAKER-ESP32开发板 | 1 |
+| 直流电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+#### 电机驱动依赖库安装
+
+1. 下载电机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`maker_esp32/base/dc_motor/`目录;
+
+3. 选择`dc_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+| 硬件 | 开发板引脚 |
+| :--- | :--- |
+| 4个直流电机 | M1-M4直流电机口 |
+| 6V-16V外接电源 | DC电源接口 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个直流电机同时正转 |
+ | 下方向 | 按住(holding) | 4个直流电机同时反转 |
+ | Cross | 按住(holding) | 4个直流电机同时刹车 |
+ | 无操作 | - | 4个直流电机停止 |
+
+ 同时按住上方向和下方向按钮时无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个直流电机都会刹车。
+
+### 舵机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个舵机的转动角度。通过手柄的**Square/Triangle/Circle**按钮将4个舵机同时旋转到预设角度(0°/90°/180°)。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| MAKER-ESP32开发板 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**SG90舵机也可改为使用MG90S舵机。
+
+#### 舵机驱动依赖库安装
+
+1. 下载舵机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`maker_esp32/base/servo/`目录;
+
+3. 选择`servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+| 硬件 | 开发板引脚 |
+| :--- | :--- |
+| 1号舵机 | 26 |
+| 2号舵机 | 25 |
+| 3号舵机 | 33 |
+| 4号舵机 | 32 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。
diff --git a/examples_description_maker_esp32_pro.zh-CN.md b/examples_description_maker_esp32_pro.zh-CN.md
new file mode 100644
index 0000000..621b685
--- /dev/null
+++ b/examples_description_maker_esp32_pro.zh-CN.md
@@ -0,0 +1,446 @@
+# CodexPad-S10手柄控制示例:MAKER-ESP32-PRO开发板示例说明
+
+本文档针对**MAKER-ESP32-PRO开发板**,提供使用**CodexPad-S10 手柄**进行无线控制的基础示例。示例涵盖直流电机、编码电机、舵机以及编码电机与舵机的组合控制。用户可根据需求选择对应的示例进行学习和开发。
+
+## 准备工作
+
+### 熟悉产品文档
+
+- 详细阅读CodexPad-S10产品手册:👉 [产品详情](https://github.com/CodexPad/codex_pad_s10/blob/main/README.zh-CN.md#codexpad-s10),全面了解硬件特性、熟悉手柄按键摇杆布局、功能定义、指示灯状态以及开关机操作等基本信息。
+
+- 详细阅读MAKER-ESP32-PRO开发板的产品手册:👉 [产品详情](https://emakefun.github.io/emakefun-docsify/#/zh-cn/esp32/maker_esp32_pro/maker_esp32_pro),熟悉引脚分布布局、功能定义,如何使用等基本信息。
+
+### 获取并记录手柄**Bluetooth Device Address(BD_ADDR)**
+
+> **⚠️ 重要提示**:示例程序均是是通过 **Bluetooth Device Address(BD_ADDR)** 进行连接。**编程时,必须在代码明确指定您手柄的Bluetooth Device Address(BD_ADDR)。**
+
+请参考产品手册中提供的方法,获取您手柄的**Bluetooth Device Address(BD_ADDR)**。其格式通常为 `"E4:66:E5:A2:24:5D"`(由0-9、A-F的字符组成,冒号为半角)。请妥善记录此信息,后续需要在代码为您自己手柄的实际**Bluetooth Device Address(BD_ADDR)**。
+
+### 开启手柄并进入待连接状态
+
+- 将手柄开机,手柄开机后会自动处于蓝牙可被发现的**待连接状态**,此时手柄指示灯应呈现**慢闪状态(约每秒闪烁一次)**。
+
+### 安装ESP32开发板管理器
+
+1. 在Arduino IDE中,打开**工具** > **开发板** > **开发板管理器...**。
+
+2. 在搜索框中输入`esp32`,找到并安装**ESP32 by Espressif Systems**。
+
+3. 安装完成后,在**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`。
+
+4. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口。
+
+### 安装CodexPad库
+
+1. **打开Arduino IDE库管理器**
+
+ - 菜单栏:**工具** → **管理库...**
+
+ - 快捷键:`Ctrl+Shift+I`(Windows/Linux)或 `Cmd+Shift+I`(Mac)
+
+2. **搜索并安装**
+
+ - 在搜索框中输入:`CodexPad`
+
+ - 找到CodexPad库
+
+ - **确保在下拉菜单中选择最新版本**
+
+ - 点击**安装**按钮
+
+ 
+
+ > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。
+
+3. **安装依赖库**
+
+ - 当出现依赖库安装对话框时,选择**全部安装**
+
+ 
+
+> **⚠️ 重要版本说明**
+> 本文档中的截图可能显示较旧版本。**请始终安装以下两者的最新版本**:
+>
+> - `CodexPad`库
+> - `NimBLE-Arduino`依赖库
+>
+> 如果您跳过了依赖库安装,请手动安装最新版`NimBLE-Arduino`:
+>
+> 1. 再次打开库管理器
+> 2. 搜索`NimBLE-Arduino`
+> 3. 在下拉菜单中**选择最新版本**
+> 4. 点击安装
+
+## 示例程序下载
+
+通过此链接下载示例程序:点击此处下载示例程序
+
+示例程序下载后,将其解压到不包含中文、空格等特殊字符的路径目录下。
+
+## 示例说明
+
+MAKER-ESP32-PRO开发板示例包含以下4个示例:
+
+| 示例 | 功能说明 | 示例路径 |
+| :--- | :--- | :--- |
+| [直流电机控制示例](#直流电机控制示例) | 控制4个直流电机 | `maker_esp32/base/dc_motor/dc_motor.ino` |
+| [编码电机控制示例](#编码电机控制示例) | 控制4个编码电机(含编码器反馈) | `maker_esp32/base/encoder_motor/encoder_motor.ino` |
+| [舵机控制示例](#舵机控制示例) | 控制4个舵机 | `maker_esp32/base/servo/servo.ino` |
+| [编码电机和舵机综合控制示例](#编码电机和舵机综合控制示例) | 编码电机 + 舵机综合控制 | `maker_esp32/base/encoder_motor_and_servo/encoder_motor_and_servo.ino` |
+
+### 直流电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个直流电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| MAKER-ESP32-PRO开发板 | 1 |
+| 直流电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+#### 电机驱动依赖库安装
+
+1. 下载电机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`maker_esp32/base/dc_motor/`目录;
+
+3. 选择`dc_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+| 硬件 | 开发板引脚 |
+| :--- | :--- |
+| 4个直流电机 | M0-M3直流电机口 |
+| 6V-16V外接电源 | DC电源接口 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个直流电机同时正转 |
+ | 下方向 | 按住(holding) | 4个直流电机同时反转 |
+ | Cross | 按住(holding) | 4个直流电机同时刹车 |
+ | 无操作 | - | 4个直流电机停止 |
+
+ 同时按住上方向和下方向按钮时无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个直流电机都会刹车。
+
+### 编码电机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄控制4个编码电机的运行状态。通过手柄的**上/下方向按钮**控制电机正反转,**Cross按钮**实现刹车,松开所有按钮后电机停止。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| MAKER-ESP32-PRO开发板 | 1 |
+| 编码电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:** 示例中的编码电机默认参数为:每转脉冲数(PPR)12,减速比90,相位关系为B相领先于A相。如果使用的编码电机的参数不同,根据实际情况,请在代码中修改对应参数值。
+
+#### 电机驱动依赖库安装
+
+1. 下载电机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`maker_esp32/base/encoder_motor/`目录;
+
+3. 选择`encoder_motor.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+| 硬件 | 开发板引脚 |
+| :--- | :--- |
+| 4个编码电机 | E0-E3编码电机口 |
+| 6V-16V外接电源 | DC电源接口 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个编码电机同时正转 |
+ | 下方向 | 按住(holding) | 4个编码电机同时反转 |
+ | Cross | 按住(holding) | 4个编码电机同时刹车 |
+ | 无操作 | - | 4个编码电机停止 |
+
+ 同时按住上方向和下方向按钮时,编码电机无动作。Cross按钮优先级最高,按下后无论其他按钮状态如何,4个编码电机都会刹车。
+
+### 舵机控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个舵机的转动角度。通过手柄的**Square/Triangle/Circle**按钮将4个舵机同时旋转到预设角度(0°/90°/180°)。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| MAKER-ESP32-PRO开发板 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**SG90舵机也可改为使用MG90S舵机。
+
+#### 舵机驱动依赖库安装
+
+1. 下载舵机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`maker_esp32/base/servo/`目录;
+
+3. 选择`servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+| 硬件 | 开发板引脚 |
+| :--- | :--- |
+| 1号舵机 | 26 |
+| 2号舵机 | 25 |
+| 3号舵机 | 33 |
+| 4号舵机 | 32 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。
+
+### 编码电机和舵机综合控制示例
+
+#### 功能
+
+使用CodexPad‑S10手柄同时控制4个编码电机的运行状态以及4个舵机的转动角度。编码电机控制和舵机控制互不干扰,可同时操作。
+
+#### 硬件准备
+
+| 硬件 | 数量 |
+| :--- | :--- |
+| MAKER-ESP32-PRO开发板 | 1 |
+| 编码电机 | 4 |
+| 6V-16V外接电源 | 1 |
+| SG90舵机 | 4 |
+| CodexPad-S10手柄 | 1 |
+
+> **📌 注意:**
+>
+> 1. 示例中的编码电机默认参数为:每转脉冲数(PPR)12,减速比90,相位关系为B 相领先于A相。如果使用的编码电机的参数不同,根据实际情况,请在代码中修改对应参数值。
+>
+> 2. SG90舵机也可改为使用MG90S舵机。
+
+#### 依赖库安装
+
+##### 电机驱动依赖库安装
+
+1. 下载电机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+##### 舵机驱动依赖库安装
+
+1. 下载舵机驱动依赖库程序:下载链接
+
+2. 打开Arduino IDE;
+
+3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**;
+
+4. 选择刚刚下载好的.zip库文件,点击“打开”;
+
+5. 等待库文件安装完即可。
+
+
+
+#### 打开示例
+
+1. 在Arduino IDE中点击**文件 → 打开**,跳转到解压后的示例程序所在目录;
+
+2. 在解压后的示例程序所在目录中,导航到`maker_esp32/base/encoder_motor_and_servo/`目录;
+
+3. 选择`encoder_motor_and_servo.ino`文件并打开。
+
+#### 配置
+
+示例程序使用前,需要将示例程序中的**Bluetooth Device Address(BD_ADDR)**信息替换为您手柄的**Bluetooth Device Address(BD_ADDR)**信息。
+
+在打开的示例代码中找到以下常量,并将其修改为您对应手柄的**Bluetooth Device Address(BD_ADDR)**:
+
+```cpp
+// 替换为你的 CodexPad 的 Bluetooth device address。
+// Replace with your CodexPad device's Bluetooth device address.
+const String kBluetoothDeviceAddress = "16:00:00:00:03:27";
+```
+
+#### 硬件接线
+
+| 硬件 | 开发板引脚 |
+| :--- | :--- |
+| 1号舵机 | 26 |
+| 2号舵机 | 25 |
+| 3号舵机 | 33 |
+| 4号舵机 | 32 |
+| 4个编码电机 | E0-E3编码电机口 |
+| 6V-16V外接电源 | DC电源接口 |
+
+
+
+#### 编译运行
+
+1. 在Arduino IDE中选择开发板型号:**工具** > **开发板**列表中选择ESP32开发板型号:`ESP32 Dev Module`;
+
+2. 通过USB数据线将开发板连接至电脑,并在**工具** > **端口**菜单中选择正确的串行端口;
+
+3. 点击**上传**按钮,等待编译和烧录完成;
+
+4. 烧录完成后,重启开发板;
+
+5. 手柄连接成功后,按下对应按钮即可控制电机;
+
+6. **手柄操作说明:**
+
+ | 手柄按钮 | 操作方式 | 功能 |
+ | :--- | :--- | :--- |
+ | 上方向 | 按住(holding) | 4个编码电机同时正转 |
+ | 下方向 | 按住(holding) | 4个编码电机同时反转 |
+ | Cross | 按住(holding) | 4个编码电机同时刹车 |
+ | Square | 按下(pressed) | 4个舵机同时旋转到0度 |
+ | Triangle | 按下(pressed) | 4个舵机同时旋转到90度 |
+ | Circle | 按下(pressed) | 4个舵机同时旋转到180 |
+
+ 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。