项目简介
本项目是一个用于Arduino的GUI控件库,旨在帮助用户在Arduino设备上创建并管理图形用户界面(GUI)。通过该库,用户能轻松利用一系列GUI控件构建丰富的交互界面,提升Arduino应用的用户体验。
项目的主要特性和功能
- 丰富的GUI控件:提供按钮、标签、矩形、条形图等常用控件,可构建多样化用户界面。
- 事件处理机制:支持触摸、点击等触摸事件处理,允许自定义控件在不同事件下的行为。
- 控件层次管理:支持控件的层次化管理,可通过父子、兄弟关系实现控件的嵌套和布局。
- 值转换功能:可将不同数值范围映射到0 - 100的范围,便于与条形图等控件配合使用。
- 内存管理:实现有效内存管理,支持动态创建和销毁控件,避免内存泄漏。
- 屏幕支持与校准:支持带有电阻式触摸面板的TFT屏幕,屏幕校准功能集成在启动逻辑中。
- 诊断功能:提供诊断函数,可探索持久内存使用情况和进行校准测试。
- 休眠唤醒机制:包含非活动定时器,可触发屏幕的休眠和唤醒功能。
安装使用步骤
安装
- 定位到系统上的Arduino/library文件夹。
- 在该文件夹中创建TerraBox_Widgets文件夹,并将本项目的内容复制到其中。
- 下载依赖包:MCUFRIEND_kbv、Adafruit_BusIO、Adafruit_GFX_Library、Adafruit_TFTLCD_Library、Adafruit_TouchScreen、TerraBox_Persistence和TerraBox_Scheduler。
使用
- 屏幕初始化:在Arduino的setup函数中,包含头文件并使用
Screen.beginFull()
函数完成屏幕的初始化,包括校准。示例代码如下: ```C++
include
void setup() {
Screen.beginFull(); // 完全初始化屏幕,包括校准
}
2. **处理触摸事件**:由于无法通过触摸触发中断,需要在Arduino的loop函数中使用`Touch.digest()`函数来轮询处理触摸事件。示例代码如下:
C++
include
void setup() {
Screen.beginFull(); // 完全初始化屏幕,包括校准
}
void loop() {
Touch.digest(); // 处理触摸事件
}
3. **使用控件**:创建控件树并编写处理触摸事件的代码。示例代码如下:
C++
include
include
class HelloButton : public ButtonWidget { public: HelloButton(Widget* parent) : ButtonWidget(parent, 120, 20, // x, y坐标 80, 20, // 按钮宽度和高度 "Hello world") { // 按钮上的文本
Screen.setCursor(0, 40); // 将文本光标置于按钮下方
}
// 处理触摸事件
void action(TouchEvent* event) {
Screen.setCursor(120, 60); // 将文本光标置于按钮下方
Screen.println("Hello World"); // 打印Hello World
delay(5000); // 等待5秒
Screen.fillRect(120, 60, 80, 20, BLACK); // 清除文本
}
};
// 创建HelloButton控件 HelloButton hello(&Screen);
void setup() { Screen.beginFull(); // 完全初始化屏幕,包括校准 Screen.draw(); // 绘制控件树 }
void loop() { Touch.digest(); // 处理触摸事件 } ```
使用本项目需要具备一定的Arduino编程基础,以及对图形用户界面编程的理解。具体的使用方法和API细节,请参考库的文档或示例代码。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】