littlebot
Published on 2025-04-11 / 2 Visits
0

【源码】基于Arduino的GUI控件库

项目简介

本项目是一个用于Arduino的GUI控件库,旨在帮助用户在Arduino设备上创建并管理图形用户界面(GUI)。通过该库,用户能轻松利用一系列GUI控件构建丰富的交互界面,提升Arduino应用的用户体验。

项目的主要特性和功能

  1. 丰富的GUI控件:提供按钮、标签、矩形、条形图等常用控件,可构建多样化用户界面。
  2. 事件处理机制:支持触摸、点击等触摸事件处理,允许自定义控件在不同事件下的行为。
  3. 控件层次管理:支持控件的层次化管理,可通过父子、兄弟关系实现控件的嵌套和布局。
  4. 值转换功能:可将不同数值范围映射到0 - 100的范围,便于与条形图等控件配合使用。
  5. 内存管理:实现有效内存管理,支持动态创建和销毁控件,避免内存泄漏。
  6. 屏幕支持与校准:支持带有电阻式触摸面板的TFT屏幕,屏幕校准功能集成在启动逻辑中。
  7. 诊断功能:提供诊断函数,可探索持久内存使用情况和进行校准测试。
  8. 休眠唤醒机制:包含非活动定时器,可触发屏幕的休眠和唤醒功能。

安装使用步骤

安装

  1. 定位到系统上的Arduino/library文件夹。
  2. 在该文件夹中创建TerraBox_Widgets文件夹,并将本项目的内容复制到其中。
  3. 下载依赖包:MCUFRIEND_kbv、Adafruit_BusIO、Adafruit_GFX_Library、Adafruit_TFTLCD_Library、Adafruit_TouchScreen、TerraBox_Persistence和TerraBox_Scheduler。

使用

  1. 屏幕初始化:在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】