Arduino 3.5寸vLcds | Arduino I2C接口组态屏带GPU电容触摸屏(HX711称重模块)

本文主要是介绍Arduino 3.5寸vLcds | Arduino I2C接口组态屏带GPU电容触摸屏(HX711称重模块),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个实验主要是将HX711称重模块检测到的数据,通过单片机显示在3.5寸LCD屏幕上。
在这里插入图片描述

1. 准备工作

1.1 硬 件:

  • Arduino x 1
  • hx711 称重传感器 x 1
  • 3.5寸LCD屏幕 x 1

1.2 软 件:

  • Arduino IDE(开发环境)
  • VisualLcds (UI设计)
2 . vLcds组态屏

2.1 什么是3.5寸vLcds HMI 组态屏?

官方资料下载
网盘资料下载 提取码:qz6i
(资料文件夹中打开:vLCD_I2C_Package\说明文档\vLcds I2C接口显示屏入门指南)

人机界面(HMI)产品由硬件和软件两部分组成,硬件部分包括处理器、显示单元、输入单元、通讯接口、数道据存贮单元等,其中处理器的性能决定了HMI产品的性能高 低,是HMI的核心单元。根据HMI的产品等级不同,处理器可分别选用8位、16位、32位的处理器。

HMI软件一般分为两部分,即运行于内HMI硬件中的 系统软件和运行于PC机Windows操作系统下的画面组态软件。使用者都必须先使用HMI的画面组态软件制作“工容程文件 ”,再通过PC机和HMI 产品的串行通讯口,把编制好的“工程文件”下载到HMI的处理器中运行。
在这里插入图片描述
在这里插入图片描述

2.2 Visual Lcd Studio 介绍

Visual Lcd Studio 软件是用于TFT显示模块UI设计的PC应用工具,适合和各种尺寸的LCD屏幕。分别支持URAT,SPI,I2C,RS485接口屏的UI设计和命令测试。工具栏包含多种控件,方便用户快速开发和应用。

在这里插入图片描述

软件工具的模块有:

  • 编辑栏:UI设计的编辑工具
  • 工具栏: 各种控件工具
  • 控件属性:控件属性的编辑栏
  • 界面编辑: 界面编辑区域
  • 页面列表:编辑页面列表
  • 图片列表:导入图片的列表,用于UI设计(可以导入PS设计好的图片)
  • 编译输出:编译工程的输出窗口

2.3 LCD屏幕显示温度实例

以温度page页面,显示温度变量为例。

  • 新建组态屏项目设计UI ,注意ID设置
    在这里插入图片描述
  • 关键函数

TFTlcd.SetThermometerValue(page_Id,9,value);

  • page_Id :屏幕页面的 page_Id
  • 9 : 控件_Id
  • value : 温度变量

在这里插入图片描述

2.4 关键代码

else if(page_Id == Temperture_PAGE){value =20;for(i=0;i<=10;i+=1){TFTlcd.SetThermometerValue(page_Id,9,value);TFTlcd.SetNumberValue(page_Id,11,value-20);value +=10;delay(200);}value =120;for(i=0;i<=10;i+=1){TFTlcd.SetThermometerValue(page_Id,9,value);TFTlcd.SetNumberValue(page_Id,11,value-20);value -=10;delay(200);}}

注意:以官方资料为准。若出现按照官方资料中的示例设计屏幕UI、单片机源程序编译\下载都没有问题,屏幕仍然不能显示传感器数据的问题,试一试检查线路连接的问题,说明单片机和屏幕通过I2C通信有问题。

补充:卖家的资料里面关于I2C引脚接线出了问题,难怪我之前测试的时候,屏幕上老是显示不了传感器变量数据,原来是是因为arduino 单片机 I2C接线出了问题,导致屏幕与单片机没有进行通信。资料上面的接线如下:

Nano I2C 接线:

  • A4 SDA (数据线)
  • A5 SCL(时钟线)

下面是官方资料上的错误接线:
在这里插入图片描述

Uno I2C接线:

  • A4 SDA (数据线)
  • A5 SCL(时钟线)

官方资料的Arduno Uno 与屏幕的接线不存在问题,UNO板子上面有引出对应的I2C通信接口,同时A4\A5引脚也可以用。
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3 . HX711模块

3.1 HX711简介

(HX711压力传感器模块资料 提取码:qjy4)

HX711是一款专为高精度电子秤而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B则为固定的32增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。

3.2 HX711芯片特点

  • 两路可选择差分输入

  • 片内低噪声可编程放大器,可选增益为64和128

  • 片内稳压电路可直接向外部传感器和芯片内A/D转换器提供电源

  • 片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟

  • 上电自动复位电路

  • 简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程

  • 可选择10Hz或80Hz的输出数据速率

  • 同步抑制50Hz和60Hz的电源干扰

  • 耗电量(含稳压电源电路):

    • 典型工作电流:1.7mA
    • 断电电流:1μA
  • 工作电压范围:2.6~5.5V

  • 工作温度范围:-20~+85℃

  • 16管脚的SOP-16封装

3.3 HX711引脚及功能

在这里插入图片描述
在这里插入图片描述
3.4 HX711应用电路

HX711芯片应用于计价秤的一个参考电路图。该方案使用内部时钟振荡器(XI=0),10Hz的输出数据速率(RATE=0)。电源(2.7~5.5V)直接取用与MCU芯片相同的供电电源。通道A与传感器相连,通道B通过片外分压电阻(未在图一中显示)与电池相连,用于检测电池电压。

在这里插入图片描述

在这里插入图片描述

3.5 关键代码

//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void)  //增益128
{unsigned long count; unsigned char i;bool Flag = 0;digitalWrite(HX711_DT, HIGH);delayMicroseconds(1);digitalWrite(HX711_SCK, LOW);delayMicroseconds(1);count=0; while(digitalRead(HX711_DT)); //INPUT , AD转换未结束则等待,否则开始读取for(i=0;i<24;i++)//24位{ digitalWrite(HX711_SCK, HIGH); //发送脉冲delayMicroseconds(1);count=count<<1;  //下降沿来时变量Count左移一位,右侧补零digitalWrite(HX711_SCK, LOW); delayMicroseconds(1);if(digitalRead(HX711_DT))count++; } digitalWrite(HX711_SCK, HIGH); count ^= 0x800000;//第25个脉冲下降沿来时,转换数据delayMicroseconds(1);digitalWrite(HX711_SCK, LOW); delayMicroseconds(1);return(count);
}
4. 轻轨拥挤度显示

4.1 框架图
在这里插入图片描述

4.2 程序流程图

在这里插入图片描述

4.3 关键代码

void loop()
{int i ;unsigned int value_1;//定义value_1为无符号整形int value_2,value_3,value_4;/********************************************************/
//   Weight = Get_Weight();  //计算放在传感器上的重物重量
//   Serial.print(float(Weight/1000),3); //串口显示重量
//   Serial.print(" kg\n");  //显示单位
//   Serial.print("\n");   //显示单位
//   delay(1000);        //延时1s/********************************************************/Weight = Get_Weight();  //计算放在传感器上的重物重量Serial.print("压力重量:");      Serial.print(Weight);  //显示Serial.print("\n");   ////     if(Weight <= 0)//设置数值范围在0~1023,0~25之间
//     { Weight = 0; }
//     if(Weight >= 1023)
//      { Weight = 25; }//    value_1 = random(0,25);value_1 = map((int)Weight,0,1023,0,50);//将压力传感器0~1023的数值装换至0~50value_2 = random(52, 76);//random随机函数,设置其他车厢的人数值为52~76的随机数value_3 = random(77, 100);value_4 = random(26, 51);Serial.print("屏幕重量:"); Serial.print(value_1);  //显示Serial.print("\n");   ////   Serial.println("ProcessMessage");TFTlcd.SetPage(page_id_2);//page2为常显示页面TFTlcd.SetNumberValue(page_id_2,Num_id_1,value_1);//page2,NO.1,value1分别为:页面2的第一号车厢显示value人数数值TFTlcd.SetNumberValue(page_id_2,Num_id_2,value_2);TFTlcd.SetNumberValue(page_id_2,Num_id_3,value_3);TFTlcd.SetNumberValue(page_id_2,Num_id_4,value_4);TFTlcd.SetBatteryValue(page_id_2,Bry_id_1,value_1);//NO.1TFTlcd.SetBatteryValue(page_id_2,Bry_id_2,value_2+1);TFTlcd.SetBatteryValue(page_id_2,Bry_id_3,value_3+1);TFTlcd.SetBatteryValue(page_id_2,Bry_id_4,value_4+1);delay(5000);//
// data_size = TFTlcd.queue_find_cmd(cmd_buffer,CMD_MAX_SIZE);
//  
//  if(data_size>0)//receive command
//  {
//    Serial.println(data_size, HEX);
//    Serial.println(F("ProcessMessage"));
//    ProcessMessage((PCTRL_MSG)cmd_buffer, data_size);//command process
//  } 
//
//  if(update_en)
//  {
//    Serial.println(F("UpdateUI"));
//    update_en = 0;
//    delay(100);
//    UpdateUI();
//  }}

参考资料

  • [1] HX711模块原理图及驱动程序

这篇关于Arduino 3.5寸vLcds | Arduino I2C接口组态屏带GPU电容触摸屏(HX711称重模块)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/281801

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

如何用GPU算力卡P100玩黑神话悟空?

精力有限,只记录关键信息,希望未来能够有助于其他人。 文章目录 综述背景评估游戏性能需求显卡需求CPU和内存系统需求主机需求显式需求 实操硬件安装安装操作系统Win11安装驱动修改注册表选择程序使用什么GPU 安装黑神话悟空其他 综述 用P100 + PCIe Gen3.0 + Dell720服务器(32C64G),运行黑神话悟空画质中等流畅运行。 背景 假设有一张P100-

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu