关于adrduino HX711库的解析

资料在这里:链接:https://pan.baidu.com/s/1a3lbToJZKTeBq6lbU9SRCg
提取码:1234

实验室一个hx711称重模块,搞了一下,不稳定,所以解析一下代码:

#ifndef __HX711__H__
#define __HX711__H__
#include <Arduino.h>
#define HX711_SCK 2       //设置2号引脚发送时钟信号
#define HX711_DT 3        //设置3号引脚接收数据信号
extern void Init_Hx711();             //初始化
extern unsigned long HX711_Read(void);   //读取增益128
extern long Get_Weight();               //获取重量
extern void Get_Maopi();                //获取毛皮
#endif

初始化函数
Init_Hx711():

void Init_Hx711()
{
	pinMode(HX711_SCK, OUTPUT);	
	pinMode(HX711_DT, INPUT);
}
/*
初始化Hx711模块 ,设置引脚SCK和DT 输出输入  类似IIC 用引脚模拟iic
*/

读取增益函数unsigned long HX711_Read(void)

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));  //等待数据引脚DT响应高电平
  	for(i=0;i<24;i++) //循环读取24位数据  hx711芯片是24位ADC储存芯片
	{ 
	  	digitalWrite(HX711_SCK, HIGH); 
		delayMicroseconds(1);
	  	count=count<<1; 
		digitalWrite(HX711_SCK, LOW); 
		delayMicroseconds(1);
	  	if(digitalRead(HX711_DT))
			count++; 
		//发送时钟信号 并且移位 如果读取电平为高,当前的count的位数为1,否则默认为0

	} 
 	digitalWrite(HX711_SCK, HIGH); 
	count ^= 0x800000;   /*
	
	^是异或,位运算的一种,相同为0不同为1 a=3,二进制表示是00000011 b=4,二进制表示是00000100 a=a^b,a的值为:00000111 b=b^a,b的值为:00000011,即是a的初值3 a=a^b,a的值为:00000100,即是b的初值4 实现交换  
	 这里相当于是count ^= 0x800000  =  count=count^0x800000,
	 如果count=FFFFFF,拆散开来为二进制的1111 1111 1111 1111 1111 1111
	 0x800000=1000 0000 0000 0000 0000 0000
	 count=count^0x800000=1111 1111 1111 1111 1111 1111^1000 0000 0000 0000 0000 0000=1000 0000 0000 0000 0000 0000;


*/
	delayMicroseconds(1);
	digitalWrite(HX711_SCK, LOW); 
	delayMicroseconds(1);
	//质低时钟,等待下次发送
	return(count); //返回count的值
}

获取毛皮(重量初始化) void Get_Maopi()

void Get_Maopi()
{
	Weight_Maopi = HX711_Read(); //赋值hx711获取的值count给maopi
} 
/*
可以理解为获取没有东西时候的重量  重量初始化
*/

获取重量:long Get_Weight()

long Get_Weight()
{
	HX711_Buffer = HX711_Read();
	Weight_Shiwu = HX711_Buffer;
	Weight_Shiwu = Weight_Shiwu - Weight_Maopi;				//获取实物的AD采样数值。  用现在的重量-之前初始化的重量
	Weight_Shiwu = (long)((float)Weight_Shiwu/GapValue); //实物的重量=数值/GapValue
	return Weight_Shiwu; //返回实物的重量
}

GapValue取多少,具体看说明书,在函数里是这样子定义的:

#define GapValue 430

手册又是这样子定义的:
在这里插入图片描述
arduino代码实现:

/*
 * #define HX711_SCK 2
#define HX711_DT 3
有误  需要校准
*/


#include "HX711.h"
float Weight = 0;

void setup()
{
	Init_Hx711();				//初始化HX711模块连接的IO设置

	Serial.begin(9600);
	Serial.print("Welcome to use!\n");

	delay(3000);
	Get_Maopi();		//获取毛皮
}

void loop()
{
	Weight = Get_Weight();	//计算放在传感器上的重物重量
	Serial.print(float(Weight/1000),3);	//(g)缩小一千倍(kg) 串口显示重量  3位浮点数
	Serial.print(" kg\n");	//显示单位
	Serial.print("\n");		//显示单位
	delay(1000);				//延时1s

}

在这里插入图片描述

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式 更改Arduino的HX711;增加一些去除不稳定数据的采集方式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创客阿蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值