Sửa lỗi thư viện HX711.h cho cảm biến khối lượng Loadcell

05/08/2022
sua-loi-thu-vien-hx711-h-cho-cam-bien-khoi-luong-loadcell

Sửa lỗi thư viện HX711.h cho cảm biến khối lượng Loadcell

Kiểu code cũ trước của thư viện HX711:

#include "HX711.h"  

#define DOUT  3

#define CLK  2

HX711 scale(DOUT, CLK);

float calibration_factor = -103525;

void setup() {  

Serial.begin(9600);  

Serial.println("HX711 Calibration");  

Serial.println("Remove all weight from scale");  

Serial.println("After readings begin, place known weight on scale");  

Serial.println("Press a,s,d,f to increase calibration factor by 10,100,1000,10000 respectively");  Serial.println("Press z,x,c,v to decrease calibration factor by 10,100,1000,10000 respectively");  

Serial.println("Press t for tare");  

scale.set_scale();  scale.tare(); //Reset giá trị về 0  

long zero_factor = scale.read_average(); //đọc thông tin  

Serial.print("Zero factor: ");  

Serial.println(zero_factor); }

void loop() {  scale.set_scale(calibration_factor); //điều chỉnh theo hệ số hiệu chỉnh  Serial.print("Reading: ");  Serial.print(scale.get_units(), 3);  

//********************//

    Phần tô mầu đỏ vàng ở trên sẽ báo lỗi (status 1  no matching function for call to 'HX711::HX711(int, int)')

Do thư viện đã sửa lại nên bạn chỉ cần sửa lại như sau là được:

#include "HX711.h"  
 
#define DOUT  2
#define CLK  3             //chú ý không dùng tên SCK vì trùng tên lệnh hệ thống

//Hoặc dùng kiểu dưới
            //const int DOUT = 2;
            //const int CLK = 3; 
HX711 scale;     //Sửa chỗ này

float calibration_factor = -103525;  

void setup() {
  Serial.begin(9600);
  scale.begin(DOUT, CLK);   //Thêm lệnh này nữa là xong
  
  Serial.println("HX711 Calibration");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press a,s,d,f to increase calibration factor by 10,100,1000,10000 respectively");
  Serial.println("Press z,x,c,v to decrease calibration factor by 10,100,1000,10000 respectively");
  Serial.println("Press t for tare");
  scale.set_scale();
  scale.tare(); //Reset giá trị về 0
 
  long zero_factor = scale.read_average(); //đọc thông tin
  Serial.print("Zero factor: "); 
  Serial.println(zero_factor);
}
void loop() {
 
  scale.set_scale(calibration_factor); //điều chỉnh theo hệ số hiệu chỉnh
 
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 3);
  Serial.print(" kg"); //Thay đổi giá trị này thành kg và điều chỉnh lại hệ số hiệu chuẩn
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();
 
  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
    else if(temp == 's')
      calibration_factor += 100;  
    else if(temp == 'x')
      calibration_factor -= 100;  
    else if(temp == 'd')
      calibration_factor += 1000;  
    else if(temp == 'c')
      calibration_factor -= 1000;
    else if(temp == 'f')
      calibration_factor += 10000;  
    else if(temp == 'v')
      calibration_factor -= 10000;  
    else if(temp == 't')
      scale.tare();  //Reset giá trị về 0
  }
}

Bình luận
Nội dung này chưa có bình luận, hãy gửi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN CỦA BẠN