// // FILE: HX_calibration.ino // AUTHOR: Rob Tillaart // PURPOSE: HX711 calibration finder for offset and scale // URL: https://github.com/RobTillaart/HX711 #include "HX711.h" HX711 myScale; // adjust pins if needed. uint8_t dataPin = 6; uint8_t clockPin = 7; void setup() { Serial.begin(115200); Serial.println(); Serial.println(__FILE__); Serial.print("HX711_LIB_VERSION: "); Serial.println(HX711_LIB_VERSION); Serial.println(); myScale.begin(dataPin, clockPin); } void loop() { calibrate(); } void calibrate() { Serial.println("\n\nCALIBRATION\n==========="); Serial.println("remove all weight from the loadcell"); // flush Serial input while (Serial.available()) Serial.read(); Serial.println("and press enter\n"); while (Serial.available() == 0); Serial.println("Determine zero weight offset"); // average 20 measurements. myScale.tare(20); int32_t offset = myScale.get_offset(); Serial.print("OFFSET: "); Serial.println(offset); Serial.println(); Serial.println("place a weight on the loadcell"); // flush Serial input while (Serial.available()) Serial.read(); Serial.println("enter the weight in (whole) grams and press enter"); uint32_t weight = 0; while (Serial.peek() != '\n') { if (Serial.available()) { char ch = Serial.read(); if (isdigit(ch)) { weight *= 10; weight = weight + (ch - '0'); } } } Serial.print("WEIGHT: "); Serial.println(weight); myScale.calibrate_scale(weight, 20); float scale = myScale.get_scale(); Serial.print("SCALE: "); Serial.println(scale, 6); Serial.print("\nuse scale.set_offset("); Serial.print(offset); Serial.print("); and scale.set_scale("); Serial.print(scale, 6); Serial.print(");\n"); Serial.println("in the setup of your project"); Serial.println("\n\n"); } // -- END OF FILE --