// 校准称重传感器
#include <Arduino.h>
#include "HX711.h"
// HX711电路接线
const int LOADCELL_DOUT_PIN = 5; //DT
const int LOADCELL_SCK_PIN = 4; //SCK
double itemWeight=2.02; //重物重量
double scaleNumber=0.0; //校准值
HX711 scale;
void setup() {
Serial.begin(115200);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);//初始化
}
double getScale(){//获取校准值
long reading;
if (scale.is_ready()) {
scale.set_scale();
Serial.println("等待... 移除托盘重物");
delay(500);
scale.tare();
Serial.println("皮重测量完成...");
Serial.print("放已知重量物体...");
if(scale.get_units(10)){
delay(500);
reading = scale.get_units(10);
Serial.print("结果: ");
Serial.println(reading);
scaleNumber=reading/itemWeight;
Serial.print("校准值:\t");
Serial.println(scaleNumber);
}else{
Serial.println("请放重物重新校准");
}
}
else {
Serial.println("HX711离线.");
}
delay(100);
return scaleNumber;
}
void loop() {
getScale();
}
//校准系数=读数(reading)/实际物体重量
/*
#include <Arduino.h>
#include "HX711.h"
// HX711接线
const int LOADCELL_DOUT_PIN = 5;
const int LOADCELL_SCK_PIN = 4;
HX711 scale;
void setup() {
Serial.begin(115200);
Serial.println("HX711 示例");
Serial.println("初始化");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Serial.println("无校准:");
Serial.print("读数: \t\t");
Serial.println(scale.read()); // 打印ADC的原始读数
Serial.print("读数平均值: \t\t");
Serial.println(scale.read_average(20)); // 打印ADC 20个读数的平均值
Serial.print("获取值: \t\t");
Serial.println(scale.get_value(5)); // 打印ADC的5个读数的平均值减去皮重(尚未设置)
Serial.print("获取单位: \t\t");
Serial.println(scale.get_units(5), 1); // 打印ADC的5个读数的平均值减去皮重(未设置)
// 通过传感器参数(尚未设置)
scale.set_scale(419.923371647509579);
//scale.set_scale(-471.497);//该值是通过用已知重量校准天平而获得的
scale.tare(); //将刻度重置为0
Serial.println("设置磅秤后:");
Serial.print("读书: \t\t");
Serial.println(scale.read()); // 设置磅秤后
Serial.print("read ave: \t\t");
Serial.println(scale.read_average(20)); // 打印ADC 20个读数的平均值
Serial.print("获取值: \t\t");
Serial.println(scale.get_value(5)); // 打印ADC的5个读数的平均值减去皮重,用皮重()设置
Serial.print("获取单位: \t\t");
Serial.println(scale.get_units(5), 1); // 打印ADC的5个读数的平均值减去皮重,除以
//通过使用set_scale设置的S传感器参数
Serial.println("Readings:");
}
void loop() {
Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 5);
scale.power_down(); // 将ADC置于睡眠模式
delay(5);
scale.power_up();
}
*/