# LEDController
**Repository Path**: will-king0308/LEDController
## Basic Information
- **Project Name**: LEDController
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-15
- **Last Updated**: 2026-01-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LED Controller - ESP32 HUB75E LED矩阵控制器
一个基于ESP32和HUB75E LED矩阵的智能LED显示控制器项目,支持Android App远程控制,实现文字显示、图片绘制、GIF动画播放、计时游戏等功能。
## 📱 项目演示
🎬 **[观看完整演示视频](https://www.bilibili.com/video/BV19r4iz5Eeo/?vd_source=a04a7343930f07c5b8e3583fdc3b1303)**
## 🖼️ 项目展示
### 硬件展示
ESP32开发板与HUB75E LED矩阵模块
64x64 LED矩阵显示效果
### Android应用界面
主界面 - 支持文字显示、亮度调节、设备连接管理、时钟显示
涂鸦功能 - 64x64像素画布,支持实时绘制和图片选择
文字显示 - 支持静态文字和滚动文字,多种字体大小
素材库 - 支持多种GIF动画播放和图片显示
## ✨ 主要特性
### 🎯 核心功能
- **文字显示**: 支持静态和滚动文字显示,通过开关控制,多种字体大小和滚动速度
- **图片绘制**: 64x64像素画布,支持实时绘制和图片选择
- **GIF动画**: 内置多种GIF动画,支持循环播放
- **计时游戏**: 数字计时游戏,考验反应能力
- **时钟显示**: 实时时钟显示功能
- **亮度调节**: 0-100%亮度调节
- **蓝牙控制**: 通过BLE协议远程控制,支持MTU和PHY优化
### 📱 Android应用特性
- **直观界面**: 简洁易用的用户界面,Material Design风格
- **实时控制**: 实时调节亮度和绘制
- **设备管理**: 自动连接和重连功能,支持设备配对
- **多语言支持**: 中文界面
- **配置保存**: 自动保存用户偏好设置
- **连接优化**: 支持MTU协商和PHY协商,提升传输效率
- **图片处理**: 支持多种图片格式,自动缩放和优化
### 🔧 硬件特性
- **ESP32主控**: 强大的WiFi+蓝牙双模芯片
- **HUB75E接口**: 标准LED矩阵驱动接口
- **64x64分辨率**: 4096个LED像素点
- **高刷新率**: 流畅的显示效果
- **低功耗设计**: 节能环保
## 🛠️ 技术架构
### 硬件架构
```
ESP32 → HUB75E接口 → LED矩阵
↓
蓝牙BLE ← → Android App
```
### 软件架构
- **Arduino固件**: ESP32端控制程序
- **Android应用**: 用户控制界面 (Kotlin + ViewBinding)
- **BLE协议**: 设备通信协议,支持MTU/PHY优化
- **图形处理**: 图像转换和显示算法
- **游戏引擎**: 计时游戏逻辑
### 技术栈
- **Android**: Kotlin 1.9.20, AndroidX, ViewBinding
- **蓝牙**: 自定义BLE库,支持连接优化
- **图像处理**: Glide图片加载,自定义图像处理器
- **协程**: Kotlin Coroutines异步处理
- **权限管理**: RxPermissions动态权限申请
## 📦 项目结构
```
LEDController/
├── android/ # Android应用
│ └── LedControllerApp/
│ ├── app/src/main/
│ │ ├── java/ # 应用代码
│ │ │ ├── ui/ # 界面Activity
│ │ │ ├── logic/ # 业务逻辑
│ │ │ ├── model/ # 数据模型
│ │ │ ├── utils/ # 工具类
│ │ │ └── constants/ # 常量定义
│ │ ├── res/ # 资源文件
│ │ └── AndroidManifest.xml
│ ├── vt_ble/ # 自定义蓝牙库
│ ├── vt_base/ # 基础库
│ └── build.gradle.kts # 构建配置
├── arduino_esp32/ # ESP32固件
│ └── myled_hub75e/
│ ├── myled_hub75e.ino # 主程序
│ ├── config.h # 配置文件
│ └── *.cpp/*.h # 功能模块
├── archives/
│ ├── app-release.apk # Android APK
│ └── myled_hub75e_complete.bin # ESP32固件
├── art/ # 项目图片
│ ├── app_main.jpg # 应用主界面
│ ├── app_graffiti.jpg # 涂鸦界面
│ ├── app_text.jpg # 文字显示界面
│ ├── app_gif_list.jpg # 素材库界面
│ ├── app_icon.png # 应用图标
│ ├── esp32_board.png # ESP32开发板
│ └── led_display.jpg # LED显示效果
└── README.md # 项目说明
```
## 🚀 快速开始
### 硬件准备
1. **ESP32开发板** × 1
2. **HUB75E LED矩阵** (64x64) × 1
3. **连接线** 若干
4. **电源适配器** (5V/3A)
### 软件安装
1. **Arduino IDE** 或 **PlatformIO**
2. **Android Studio** (用于编译Android应用)
3. **Android设备** (Android 6.0+)
### 硬件连接
```
ESP32和HUB75E屏幕连接:
R1 -> 25 G1-> 26
B1 -> 27 GND-->GND
R2 ->14 G2->12
B2 ->13 E-> 32
A ->23 B-> 22
C -> 5 D->17
CLK-> 16 LAT->4
OE-> 15 GND->GND
```
### 固件烧录
1. 打开Arduino IDE
2. 选择ESP32开发板
3. 打开 `arduino_esp32/myled_hub75e/myled_hub75e.ino`
4. 编译并上传到ESP32
### Android应用安装
1. 使用Android Studio打开 `android/LedControllerApp/`
2. 连接Android设备
3. 编译并安装应用
4. 或直接安装 `archives/app-release.apk`
## 📖 使用说明
### 首次使用
1. 打开Android应用
2. 确保蓝牙已开启
3. 点击"重连"按钮
4. 等待设备连接成功
### 文字显示
1. 点击"文字"按钮进入文字显示界面
2. 在输入框中输入要显示的文字
3. 调节文字大小(极小/小/中/大)
4. 使用滚动开关控制文字是否滚动显示
- 关闭滚动:文字静态显示
- 开启滚动:文字滚动显示,可调节滚动速度(慢/中/快)
5. 点击"发送"按钮
### 涂鸦功能
1. 点击"涂鸦"按钮进入绘图界面
2. 选择绘制模式(拖拽/填充)
3. 在64x64画布上绘制图案
4. 开启"实时更新"可实时显示到LED
5. 支持选择手机图片进行显示
### 素材库
1. 点击"素材库"按钮进入GIF列表
2. 选择要播放的GIF动画
3. 点击播放按钮
4. 支持发送进度显示
### 计时游戏
1. 点击"计时游戏"按钮进入游戏界面
2. 查看LED屏幕显示的目标时间
3. 点击"开始游戏"按钮
4. 当LED计时到达目标时间时点击"停止计时"
5. 系统会显示游戏结果
### 时钟显示
1. 在主界面点击时钟开关
2. LED屏幕会显示实时时钟
3. 再次点击可关闭时钟显示
### 亮度调节
1. 在主界面调节亮度滑块
2. 亮度范围:0-100%
3. 设置会自动保存
### 连接优化
- 应用会自动进行MTU协商,提升传输效率
- 支持PHY协商,优化连接质量
- 支持设备配对,提升连接稳定性
## 🔧 配置说明
### ESP32配置
在 `arduino_esp32/myled_hub75e/config.h` 中:
```cpp
// LED矩阵配置
#define MATRIX_WIDTH 64
#define MATRIX_HEIGHT 64
#define MATRIX_PANELS 1
// 蓝牙配置
#define DEVICE_NAME "MyLED"
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
```
### Android配置
在 `android/LedControllerApp/app/src/main/java/com/vincent/android/ledcontroller/constants/BleConstants.kt` 中:
```kotlin
// 蓝牙设备名称
const val DEVICE_NAME = "MyLED"
// LED 服务UUID
const val LED_SERVICE_UUID = "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
// 特征UUID
const val LED_CHARACTERISTIC_CONTROL_UUID = "beb5483e-36e1-4688-b7f5-ea07361b26c0"
const val LED_CHARACTERISTIC_GIF_UUID = "beb5483e-36e1-4688-b7f5-ea07361b26b1"
const val LED_CHARACTERISTIC_BRIGHTNESS_UUID = "beb5483e-36e1-4688-b7f5-ea07361b26a9"
```
**注意**: 应用现在通过设备名称"MyLED"自动扫描和连接设备,无需手动配置设备地址。
## 🎮 游戏说明
### 计时游戏规则
1. LED屏幕会随机显示一个目标时间(如09:35)
2. 按下开始按钮后LED开始计时
3. 当计时到达目标时间时按下停止按钮即可获胜
4. 游戏考验玩家的反应能力和时间感知
## 🐛 故障排除
### 常见问题
**Q: 设备连接失败**
A: 检查蓝牙是否开启,设备是否在范围内,尝试重启应用
**Q: LED显示异常**
A: 检查硬件连接,确认电源电压稳定
**Q: 应用崩溃**
A: 检查Android版本兼容性,重新安装应用
**Q: 涂鸦功能无响应**
A: 确认设备已连接,检查实时更新开关
**Q: 图片发送失败**
A: 检查图片大小,确保设备连接正常
**Q: 游戏无法开始**
A: 确认设备已连接,检查LED屏幕是否正常显示
## 🤝 贡献指南
欢迎提交Issue和Pull Request!
### 开发环境
- Arduino IDE 1.8.x 或 PlatformIO
- Android Studio 4.x+
- ESP32开发板
- Android设备 (Android 6.0+)
### 代码规范
- 遵循Arduino和Android开发规范
- 添加适当的注释
- 保持代码简洁清晰
- 使用Kotlin协程进行异步处理
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🙏 致谢
- ESP32 Arduino库
- HUB75E LED矩阵驱动库
- Android BLE库
- 所有贡献者和测试用户
## 📞 联系方式
- **项目主页**: [GitHub Repository](https://github.com/VincentTung/LEDController)
- **演示视频**: [Bilibili](https://www.bilibili.com/video/BV19r4iz5Eeo/?vd_source=a04a7343930f07c5b8e3583fdc3b1303)
- **问题反馈**: [Issues](https://github.com/VincentTung/LEDController/issues)
---
⭐ 如果这个项目对您有帮助,请给我一个Star!
⭐ 如果您觉得我帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 🐵就太👍了。您的支持将鼓励我继续进行分享。
