

1、称重模块采用HX711芯片。
2、代码。
#include "HX711.h" //调用24bitAD HX711库
HX711 HX711_CH0(2, 3, 345); //SCK,DT,GapValue
//SCK引脚用于arduino和HX711模块通讯的时序提供
//DT引脚用于从HX711读取AD的数据
//GapValue用于校准输出的重量值,如果数值偏大就加大该值,如果数据偏小就减小该值
int LED = 13;
long Weight = 0; //定义一个变量用于存放承重的重量,单位为g
void setup()
{
Serial.begin(9600); //设定串口输出波特率
Serial.println("Welcome to use!");
Serial.println("Init...");
HX711_CH0.begin(); //读取传感器支架毛重
delay(3000); //延时3s用于传感器稳定
HX711_CH0.begin(); //重新读取传感器支架毛重用于后续计算
Serial.println("Init OK!!!");
}
void loop()
{
Weight = HX711_CH0.Get_Weight(); //采样当前传感器重量,该重量已经自动去皮,去皮值根据初始化程序中采样的值计算。
Serial.print(Weight); //串口输出当前重量
Serial.println(" g"); //单位为g
delay(1000);
}
【2023-04-02 更新】
有多位同学咨询HX711库文件,因此将库文件上传。HX711库文件下载
①HX711.h
#ifndef __HX711__H__
#define __HX711__H__
#include <Arduino.h>
class HX711
{
public:
HX711(int SCK_PIN,int DT_PIN,float GapValueIn=44);
long Get_Weight();
void begin();
int Pressed(int AlarmValue);
int HX711_SCK;
int HX711_DT;
float ValueGap;
long HX711_Buffer;
long Weight_Maopi;
long Weight_Shiwu;
int CurrentAlarm;
private:
void Get_Maopi();
unsigned long HX711_Read();
};
#endif
②HX711.cpp
#include "hx711.h"
HX711::HX711(int SCK_PIN,int DT_PIN,float GapValueIn)
{
HX711_SCK = SCK_PIN;
HX711_DT = DT_PIN;
ValueGap = GapValueIn;
}
//****************************************************
//初始化HX711
//****************************************************
void HX711::begin()
{
pinMode(HX711_SCK, OUTPUT);
pinMode(HX711_DT, INPUT);
Get_Maopi();
}
int HX711::Pressed(int AlarmValue)
{
if(Get_Weight() >= AlarmValue && CurrentAlarm == 0)
{
CurrentAlarm = 1;
return 1;
}
else if(Get_Weight() < AlarmValue)
{
CurrentAlarm = 0;
return 0;
}
return 0;
}
//****************************************************
//获取毛皮重量
//****************************************************
void HX711::Get_Maopi()
{
Weight_Maopi = HX711_Read();
}
//****************************************************
//称重
//****************************************************
long HX711::Get_Weight()
{
HX711_Buffer = HX711_Read();
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取实物的AD采样数值。
Weight_Shiwu = (long)((float)Weight_Shiwu/ValueGap+0.05);
return Weight_Shiwu;
}
//****************************************************
//读取HX711
//****************************************************
unsigned long HX711::HX711_Read() //增益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));
for(i=0;i<24;i++)
{
digitalWrite(HX711_SCK, HIGH);
delayMicroseconds(1);
count=count<<1;
digitalWrite(HX711_SCK, LOW);
delayMicroseconds(1);
if(digitalRead(HX711_DT))
count++;
}
digitalWrite(HX711_SCK, HIGH);
delayMicroseconds(1);
digitalWrite(HX711_SCK, LOW);
delayMicroseconds(1);
count ^= 0x800000;
return(count);
}
用的是aiduion自己的库文件吗。HX711_CH0是库文件自己定义的吗(小白不懂)
用的是 #include “HX711.h” 电子秤的库文件。
HX711 HX711_CH0(2, 3, 345); 是电子秤的标准定义。根据接线图设置。
https://github.com/RobTillaart/HX711
库里没有定义HX711_CH0的参数呢
HX711 library version 0.3.5.
不是同一个版本库。RobTillaart的例子可以查看RobTillaart/HX711/examples。
另外本文的HX711库文件已经上传。