Arduino结合HX711实现8路信号采集称重

2023-11-17

说明:使用两块Arduino实现8路Sensor同时采集,并输出控制信号
写作目的主要是为了作为学习笔记

Arduino & Sensor接线图

1、双机通讯连线图
双机通讯连线图
2、HX711和Sensor的连线图
HX711和Sensor的连线图
3、将8个Sensor的SCK全部接到receive板的D2引脚
4、8个DATA线分别接至receive板的D3-D10引脚
5、将8路继电器模组控制引脚接到Send板的D2-D9
6、Send板的D10和D11作为接受信号引脚
注意Sensor和Arduino进行共地

HX711库文件

1、下载链接
链接:github链接.
2、将下载到的HX711 Master文件夹放入Arduino的libraries文件夹中并加载,所有需要用的函数,如偏差设定,系数设定等都在库文件里有定义,详细请查看库文件对于库函数的定义,当然也可以自己修改库函数,以方便实际使用需求

示例代码

1、send板代码

#include <SoftwareSerial.h>
#include <HX711.h>
HX711 hx1(3, 2);
HX711 hx2(4, 2);
HX711 hx3(5, 2);
HX711 hx4(6, 2);
HX711 hx5(7, 2);
HX711 hx6(8, 2);
HX711 hx7(9, 2);
HX711 hx8(10, 2);

double c1, c2, rs;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  hx1.set_offset(121100);//设置偏移量
  hx2.set_offset(121100);
  hx3.set_offset(121100);
  hx4.set_offset(121100);
  hx5.set_offset(121100);
  hx6.set_offset(121100);
  hx7.set_offset(121100);
  hx8.set_offset(121100);

  hx1.set_scale(2214);//设置修正系数
  hx2.set_scale(2214);
  hx3.set_scale(2214);
  hx4.set_scale(2214);
  hx5.set_scale(2214);
  hx6.set_scale(2214);
  hx7.set_scale(2214);
  hx8.set_scale(2214);

}

void loop() {
  // put your main code here, to run repeatedly:
  double s1 = hx1.get_units(5); //读取5次并计算平均值
  double s2 = hx2.get_units(5);
  double s3 = hx3.get_units(5);
  double s4 = hx4.get_units(5);
  double s5 = hx5.get_units(5);
  double s6 = hx6.get_units(5);
  double s7 = hx7.get_units(5);
  double s8 = hx8.get_units(5);
  
  c1=s1+s2+s3+s4;
  c2=s5+s6+s7+s8;
  rs=c1-c2;

  transmit();//发送经过修正后的数据
}
void transmit(){
        Serial.print('a');
        Serial.print(c1);
        Serial.print('b');
        Serial.print(c2);
        Serial.print('c');
        Serial.print(rs);
        Serial.println('#');
        delay(100);
  }

发送字符中的a,b,c,#是作为标志符,以作为后续receive函数对接收到的数据进行分割处理
2、receive板代码

#include <SoftwareSerial.h>
double c1, c2, rs;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
void loop() {
  // put your main code here, to run repeatedly:
  receive();//接收到Send板上发出的数据并解析为double类型
  Serial.println(c1);
  Serial.println(c2);
  Serial.println(rs);
  Serial.println();

}
void receive() {

  String comdata = "";
  String buf1 = "";
  String buf2 = "";
  String buf3 = "";

  while (Serial.available() > 0)
  {
    comdata += char(Serial.read());
    delay(2);
  }
  if (comdata.length() > 0)
  {
    int ja, jb, jc, jd;

    for (int i = 0; i < comdata.length(); i++) {

      if (comdata[i] == 'a') {
        ja = i;
      }
      if (comdata[i] == 'b') {
        jb = i;
      }
      if (comdata[i] == 'c') {
        jc = i;
      }
      if (comdata[i] == '#') {
        jd = i;
      }

    }//找到标志符号并记录标志符号的索引位置

    for (int k = ja + 1; k < jb; k++) {
      buf1 += char(comdata[k]);
    }
    for (int k = jb + 1; k < jc; k++) {
      buf2 += char(comdata[k]);
    }
    for (int k = jc + 1; k < jd; k++) {
      buf3 += char(comdata[k]);
    }
    c1 = buf1.toDouble();
    c2 = buf2.toDouble();
    rs = buf3.toDouble();
  }//分割字符并转换为需要的数据类型
}
控制代码的输出

数据的读取和双机通讯功能实现后便可以利用,接收到的数据进行一些其他的控制代码书写

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino结合HX711实现8路信号采集称重 的相关文章

  • Arduino 支持线程吗?

    我有几个任务需要用arduino来做 但其中一个需要很长时间 所以我想使用线程来同时运行它们 我有一个 Arduino Mega 更新 四年后 我终于可以在我的 arduino mega 上安装 FreeRTOS 这里有一个link htt
  • arduino安装DHT11库

    步骤操作如下 打开Arduino IDE 在菜单栏中选择 项目 gt 加载库 gt 管理库 在库管理器的搜索框中 输入 DHT sensor library 找到 DHT sensor library by Adafruit 点击 安装 安
  • Arduino 中的字符串比较

    我正在开发基于网络的家庭自动化系统 因此我的Arduino向服务器发送请求并在串行监视器中获得以下响应以及 loneOn 这是由于Serial println r 陈述 HTTP 1 1 200 OK Date Mon 13 Oct 201
  • 使用 pySerial 等待 Arduino 自动重置

    我正在尝试在 Linux 上使用非常简单的代码 为了展示问题 从 Arduino 板上读取行 Python代码 arduino py import serial arduino serial Serial dev ttyACM0 with
  • 如何在Arduino上将int转换为字符串?

    如何转换 int n 到一个字符串 以便当我通过串行发送它时 它作为字符串发送 这是我到目前为止所拥有的 int ledPin 13 int testerPin 8 int n 1 char buf 10 void setup pinMod
  • ARDUINO 常数有什么用?以前是22,现在是100

    我正在使用热电偶并下载了 MAX6675 库 我想知道以下几行中 ARDUINO 常量的值是做什么用的 if ARDUINO gt 100 lcd write byte 0 else lcd print 0 BYTE endif lcd p
  • Arduino:使用串口和软件串口与蓝牙模块

    我的目的是使用 Arduino 通过 HC 05 蓝牙模块在 PC 和 Android 设备之间建立通信 我使用 PC 和 Arduino 串行监视器 之间的 USB 通信以及 SoftwareSerial 来连接到 HC 05 我的问题是
  • DCF77 解码器与噪声信号

    我几乎完成了我的开源 DCF77 解码器项目 当我注意到标准 Arduino DCF77 库在噪声信号上表现非常差时 这一切就开始了 特别是当天线靠近计算机或洗衣机正在运行时 我永远无法从解码器中获取时间 我的第一个方法是向输入信号添加 数
  • 如何通过蓝牙在Raspberry Pi 4和Arduino Nano BLE之间进行读写?

    我能够通过 Rpi4 的 bluepy 和 Arduino Nano BLE 的 ArduinoBLE h 连接 Raspberry Pi 4 和 Arduino Nano BLE 不幸的是 当我尝试从 Rpi4 写入 Arduino Na
  • 在Python中快速绘制数据

    我正在尝试使用 arduino 绘制来自 mpu6050 imu 的数据 MPU6050 发送数据的速度比绘图快 Arduino 代码从串口提供 6 个数据 即偏航 俯仰 滚动 轴 ay 和 az 我需要快速情节的建议 Python代码 i
  • 如何实现Android Open Accessory模式即服务?

    我一直在研究 Android 开放配件开发套件 依照指示Google 提供的 DemoKit 示例 http developer android com guide topics usb accessory html 我在使解决方案适应我的
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • pySerial 与 python 2.7 和 3.4 的差异

    我正在开发一个项目 需要通过串口将一些数字从 Windows 10 中的 python 发送到 arduino uno 作为一个简单的测试 我只想通过发送 2 来打开 LED 并通过从命令提示符发送 4 来关闭 LED 尽管我希望最终能够将
  • 如何在 Windows 上获取 Arduino 草图的汇编语言列表?

    我希望能够看到我的 Arduino 草图的汇编语言列表 我怎样才能实现这个目标 Update 我正在 Windows 机器上运行 Arduino 软件 一种方法是使用avr objdump on the elf构建创建的文件 例如 在 OS
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • 通过iPhone音频插孔读取数据

    我正在寻找一种方法来读取通过 iPhone 的音频插孔从 Arduino 发送的原始数据 我搜索了很多并发现this https github com sanjibahmad Is Headphone Plugged In tree mas
  • 从 iBeacon 接收 BLE 信号到 Bluno(arduino with BLE)

    我想从 iBeacon 到 Bluno 接收 rssi 信号和 UUID Arduino 板具有 BLE 对此有一些疑问 有没有从 BLE 到 BLE 接收 UUID 和 rssi 的解决方案 两个BLE设备可以互相通信吗 我想找一些网站来
  • 编译器:如果条件始终为真/假怎么办

    我想到了条件和编译器 我正在为 Arduino 编写一个应用程序 因此我需要该应用程序尽可能快 在我的代码中我有这个 define DEBUG false if DEBUG String pinName pinName Pin pinNam
  • Python串口通信

    我正在开发一个 Arduino 项目 由于内存限制 我将其与 Python 脚本连接起来 在Python方面 我有一个二维矩阵 其中包含各自的x y坐标值 并且在此列表中有26000个坐标对 因此 为了向大家澄清数据结构 pathlist
  • 如何使用基于HM-10蓝牙模块的BLE Shield?

    我是 arduino 项目的新手 我想请你帮忙 我从 http imall iteadstudio com development platform arduino shields im130704001 html http imall i

随机推荐

  • Rstudio更换主题/样式

    github项目地址 https github com gadenbuie rsthemes 安装 在 rstudio 的控制台console中数据 install packages devtools devtools install gi
  • 为什么会说:程序员年龄越大,越容易失业?

    在程序员的世界里 一直有一个传言 互联网公司没有35岁以上的中年人 从华为辞退34岁以上的员工 到腾讯辞退35 高级员工 似乎老程序员面临着 年龄危机 要时刻警惕在职场被 踢出 的危险 而国内其他很多职业 比如教师 医生 公务员 都在稳步发
  • python TCP通信雷达实时解析数据

    雷达解析程序 coding cp936 import socket import re class jiema def yushe3 self receve r receve av receve v receve h while True
  • 05-分布式计算框架

    目录 一 MapReduce 1 简介 2 原理 2 1 基本概念 2 2 程序执行过程 2 3 作业运行模式 二 Spark 1 简介 1 1 背景 1 2 概念 1 3 特点 2 原理 2 1 编程模型 2 2 运行模式 2 3 运行过
  • Java往字符串数组中追加一个数据

    public class Test public static void main String args 原字符串数组 String arr 原字符串数据1 原字符串数据2 执行数据添加 arr insert arr 需要追加的字符串数据
  • 三菱无机房电梯故障代码查询_【学习】 三菱J、A、K型扶梯介绍(上)

    导 读 抱前段时间我们一直在学习三菱直梯的介绍 今天就为大家分享三菱三种扶梯的介绍 分别为J型 K型和A型 三种扶梯的扶手驱动系统分别是 A型J型为直线式扶手驱动 K型自动扶梯采用摩擦轮式扶手驱动系统 当扶梯的驱动方式不相同时 我们维修的方
  • 解决docker启动mysql无法输入中文以及中文不显示或乱码问题

    前言 我在使用MySQL时 遇到了两个问题 一是在插入中文数据时 无法输入中文 二是在select的时候 查出来的中文数据是空的 因为插入时为空 然后我就使用Navicat连接数据库添加了中文数据 再到docker中查询 就发现了乱码问题
  • LeetCode64. 最小路径和

    题目大意 求出从网络左上角到右下角的一条代价最小的路径和 题目分析 使用动态规划 求出左上角到网络中每个点的代价最小路径和 假设当前要求的是point i j 点 那么它的值就应该是从左上角到它上面那个点point i 1 j 的路径和 与
  • 【技术应用】Qt Creator使用体会与小技巧

    Qt Creator是Qt官方的IDE 这个IDE为Qt编程人员提供了一个完整的开发环境 当然了 这个IDE是用Qt写的 也是免费的 这个IDE真正的编译部分使用了MinGW gcc compiler 也就是说 这个IDE主要的作用是协助开
  • 教务管理系统(免费源码获取)

    项目介绍 本系统使用springboot mybatis plus shiro lombok等技术 使用json传递数据 使用加盐加密对数据进行保存 前端页面使用vue搭建并打包放在static文件夹中 使用token保存当前用户 当用户登
  • chrome浏览器network报错:ERR_CERT_AUTHORITY_INVALID

    转载请注明作者 独孤尚良dugushangliang 出处 https blog csdn net dugushangliang article details 85275319 在访问局域网的某网址时 提示 您的连接不是私密连接 错误代码
  • 算法在ros中应用_烟火检测算法——中伟视界人工智能算法AI在智慧工地、石油中的应用_腾讯新闻...

    烟火检测算法功能说明及实现原理等 一 软件概述 视频智能分析基于目前先进的深度学习算法 通过大量的项目现场素材训练模型 通过本站大量采集的工作服素材 高精度的识别人 安全帽 工作服等识别 本项目主要两方面的算法 一是识别类的 二是行为分析
  • WPF中Datagrid其中一列使用图片显示

    实现效果 实现遇到的问题 当时想要实现如图所示 合格率 所示的效果 我的第一个想法就是使用wpf的转换器 可是接下来问题来了 我这个是通过数值来判断是否合格 什么控件可以做到既可以绑定图片类型的 又可以绑定数值类型的 还有此时的当值绑定肯定
  • 段、页、页框、页表、页表项

    段 页 页框 页表 页表项 分页式虚拟内存 页 页框 页表 页表项 段页式虚拟内存 分段 分页 段 段表 段表项 页 页框 页表 页表项 分页式虚拟内存 页 页框 页表 页表项 页 进程中的块 进程被分成许多大小相同的块 页号 页框 内存中
  • TS2769: Property 'xxx' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttribute...

    用TypeScript开发React项目 在父子组件间传值时发生错误提示 class Page extends React Component render return div div
  • vue组件利用css var(--变量)实现动态修改伪类属性(::before、::after)

    如图所示 1 我们可以利用此属性实现vue组件动态传值 修改例如 before after等 伪类的背景色 背景图等属性值 因为vue利用无法直接在css中使用data里的变量 利用var 变量名 以及style中定义变量 其实此步是模仿
  • Coordinate attention,SE,CBAM

    1 SE 因为普通卷积难以建模信道关系 SE考虑通道的相互依赖关系增强模型对信息通道的敏感性 同时全局平均池化可以帮助模型捕获全局信息 然而SE只考虑了内部通道信息而忽略了位置信息的重要性 输入X首先经过全局平均池化 然后经过全连接层来捕获
  • 静态类和动态类的区别和使用

    1 静态类中的静态方法可以通过类名直接调用静态方法 不需要实例化对象 但是无法和Spring容器中的bean进行交互 例如 Slf4j public class ExcelUtil public static
  • 动态链接

    动态链接 命令 gcc static 产生静态库 shared 产生共享库 readelf d 查看 dynamic段的内容 ldd 查看一个程序主模块或一个共享库依赖于哪些共享库 一 静态链接和动态链接的优缺点 静态链接 空间的浪费 静态
  • Arduino结合HX711实现8路信号采集称重

    说明 使用两块Arduino实现8路Sensor同时采集 并输出控制信号 写作目的主要是为了作为学习笔记 Arduino Sensor接线图 1 双机通讯连线图 2 HX711和Sensor的连线图 3 将8个Sensor的SCK全部接到r