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库 + + - **确保在下拉菜单中选择最新版本** + + - 点击**安装**按钮 + + ![在库管理中搜索 CodexPad](assets/images/install_lib/install_codexpad_library.png) + + > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。 + +3. **安装依赖库** + + - 当出现依赖库安装对话框时,选择**全部安装** + + ![安装依赖确认对话框](assets/images/install_lib/install_dependencies_dialog.png) + +> **⚠️ 重要版本说明** +> 本文档中的截图可能显示较旧版本。**请始终安装以下两者的最新版本**: +> +> - `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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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接口。 + +![直流电机连线](assets/images/hardware_wiring/ai_vox3_dc_motor.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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接口。 + +![编码电机连线](assets/images/hardware_wiring/ai_vox3_encoder_motor.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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 | + +![舵机连线](assets/images/hardware_wiring/ai_vox3_servo.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +##### 舵机驱动依赖库安装 + +1. 下载舵机驱动依赖库程序:下载链接 + +2. 打开Arduino IDE; + +3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**; + +4. 选择刚刚下载好的.zip库文件,点击“打开”; + +5. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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接口。 + +![编码电机舵机连线](assets/images/hardware_wiring/ai_vox3_encoder_motor_servo.png) + +#### 编译运行 + +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库 + + - **确保在下拉菜单中选择最新版本** + + - 点击**安装**按钮 + + ![在库管理中搜索 CodexPadFrameDecoder](assets/images/install_lib/install_codexpad_frame_decoder_library.png) + + > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。 + +### 安装MotorDriverBoard驱动库 + +1. 下载电机驱动依赖库程序:下载链接 + +2. 打开Arduino IDE; + +3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**; + +4. 选择刚刚下载好的.zip库文件,点击“打开”; + +5. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +## 示例程序下载 + +通过此链接下载示例程序:点击此处下载示例程序 + +示例程序下载后,将其解压到不包含中文、空格等特殊字符的路径目录下。 + +## 示例说明 + +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电源接口。 + +![直流电机连线](assets/images/hardware_wiring/ble_uno_dc_motor.png) + +#### 编译运行 + +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电源接口。 + +![编码电机连线](assets/images/hardware_wiring/ble_uno_encoder_motor.png) + +#### 编译运行 + +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 | + +![舵机连线](assets/images/hardware_wiring/ble_uno_servo.png) + +#### 编译运行 + +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电源接口。 + +![编码电机舵机连线](assets/images/hardware_wiring/ble_uno_encoder_motor_servo.png) + +#### 编译运行 + +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库 + + - **确保在下拉菜单中选择最新版本** + + - 点击 **安装** 按钮 + + ![在库管理中搜索 CodexPad](assets/images/install_lib/install_codexpad_library.png) + + > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。 + +3. **安装依赖库** + + - 当出现依赖库安装对话框时,选择**全部安装** + + ![安装依赖确认对话框](assets/images/install_lib/install_dependencies_dialog.png) + +> **⚠️ 重要版本说明** +> 本文档中的截图可能显示较旧版本。**请始终安装以下两者的最新版本**: +> +> - `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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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电源接口 | + +![直流电机连线](assets/images/hardware_wiring/maker_esp32_dc_motor.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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 | + +![舵机连线](assets/images/hardware_wiring/maker_esp32_servo.png) + +#### 编译运行 + +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库 + + - **确保在下拉菜单中选择最新版本** + + - 点击**安装**按钮 + + ![在库管理中搜索 CodexPad](assets/images/install_lib/install_codexpad_library.png) + + > **📌 注意:** 截图仅供参考。请务必安装最新可用版本。 + +3. **安装依赖库** + + - 当出现依赖库安装对话框时,选择**全部安装** + + ![安装依赖确认对话框](assets/images/install_lib/install_dependencies_dialog.png) + +> **⚠️ 重要版本说明** +> 本文档中的截图可能显示较旧版本。**请始终安装以下两者的最新版本**: +> +> - `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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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电源接口 | + +![直流电机连线](assets/images/hardware_wiring/maker_esp32_pro_dc_motor.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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电源接口 | + +![编码电机连线](assets/images/hardware_wiring/maker_esp32_pro_encoder_motor.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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 | + +![舵机连线](assets/images/hardware_wiring/maker_esp32_pro_servo.png) + +#### 编译运行 + +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. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +##### 舵机驱动依赖库安装 + +1. 下载舵机驱动依赖库程序:下载链接 + +2. 打开Arduino IDE; + +3. 依次点击 **项目 → 导入库 → 添加.ZIP库…**; + +4. 选择刚刚下载好的.zip库文件,点击“打开”; + +5. 等待库文件安装完即可。 + +![安装依赖库](assets/images/install_lib/add_zip.png) + +#### 打开示例 + +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电源接口 | + +![编码电机舵机连线](assets/images/hardware_wiring/maker_esp32_pro_encoder_motor_servo.png) + +#### 编译运行 + +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 | + + 同时按下多个按钮无动作,同一时刻只能某一按钮,舵机才会进行旋转。