Upload files to "libraries/HX711/examples/HX_set_persistent"
This commit is contained in:
145
libraries/HX711/examples/HX_set_persistent/HX_set_persistent.ino
Normal file
145
libraries/HX711/examples/HX_set_persistent/HX_set_persistent.ino
Normal file
@@ -0,0 +1,145 @@
|
||||
|
||||
//
|
||||
// FILE: HX_set_persistent.ino
|
||||
// AUTHOR: Felix Moli Grao la base de Rob Tillaart
|
||||
// PURPOSE: HX711 demo
|
||||
// URL: https://github.com/RobTillaart/HX711
|
||||
|
||||
//scale.set_offset(-186985);
|
||||
//scale.set_scale(14.18);
|
||||
|
||||
|
||||
#include "HX711.h"
|
||||
#include <EEPROM.h>
|
||||
|
||||
|
||||
int eeAddress = 0;
|
||||
#define EEPROM_SIZE 100
|
||||
|
||||
|
||||
bool forced = false; // indicates that we want to enter calibration mode
|
||||
HX711 scale;
|
||||
byte buttonTare= 2;
|
||||
|
||||
// adjust pins if needed
|
||||
uint8_t dataPin = 6;
|
||||
uint8_t clockPin = 7;
|
||||
// uint8_t dataPin = 19; // for ESP32
|
||||
// uint8_t clockPin = 18; // for ESP32
|
||||
|
||||
// scale.set_offset(-181815);
|
||||
// scale.set_scale(13.79);
|
||||
struct Bascula {
|
||||
float scala;
|
||||
long offSet;
|
||||
};
|
||||
|
||||
Bascula bascula;
|
||||
|
||||
void SaveStruct(int eeAddress, Bascula bascula) {
|
||||
EEPROM.put(eeAddress, bascula);
|
||||
Serial.println( "Save custom object to EEPROM: " );
|
||||
Serial.println( bascula.scala );
|
||||
Serial.println( bascula.offSet );
|
||||
}
|
||||
|
||||
Bascula LoadStruct(int eeAddress) {
|
||||
EEPROM.get( eeAddress, bascula );
|
||||
Serial.println( "Read custom object from EEPROM: " );
|
||||
Serial.print("scale: ");Serial.println( bascula.scala );
|
||||
Serial.print("offset: ");Serial.println( bascula.offSet );
|
||||
return bascula;
|
||||
}
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println();
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("HX711_LIB_VERSION: ");
|
||||
Serial.println(HX711_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
pinMode(buttonTare, INPUT_PULLUP);
|
||||
bascula = LoadStruct(0);//load off eeprom
|
||||
|
||||
scale.set_scale(bascula.scala); //read scale from eeprom position 0
|
||||
scale.set_offset(bascula.offSet); //read offSet from eeprom position 100
|
||||
scale.begin(dataPin, clockPin);// initiate communication
|
||||
|
||||
if ((bascula.scala == 0.00) || (bascula.offSet == 0) || (forced == true)) {
|
||||
|
||||
Serial.print("UNITS: ");
|
||||
Serial.println(scale.get_units(10));
|
||||
|
||||
Serial.println("\nEmpty the scale, press a key to continue");
|
||||
while (!Serial.available());
|
||||
while (Serial.available()) Serial.read();
|
||||
|
||||
scale.tare();
|
||||
Serial.print("UNITS: ");
|
||||
bascula.offSet=scale.get_units(10);
|
||||
Serial.println(bascula.offSet);
|
||||
|
||||
|
||||
Serial.println("\nPut 1000 gram in the scale, press a key to continue");
|
||||
while (!Serial.available());
|
||||
while (Serial.available()) Serial.read();
|
||||
|
||||
scale.calibrate_scale(1000, 5);
|
||||
Serial.print("UNITS: ");
|
||||
bascula.scala=scale.get_units(10);
|
||||
Serial.println(bascula.scala);
|
||||
|
||||
Serial.println("\nScale is calibrated, your calibration values:");
|
||||
|
||||
long scaleOffset = scale.get_offset();
|
||||
Serial.print("\nOffset \t");
|
||||
Serial.println(scaleOffset);
|
||||
|
||||
float scaleFactor = scale.get_scale();
|
||||
Serial.print("Scale \t");
|
||||
Serial.println(scaleFactor);
|
||||
|
||||
Serial.println("\nUse this code for setting zero and calibration factor permanently:");
|
||||
|
||||
Serial.print("\nscale.set_offset(");
|
||||
Serial.print(scaleOffset);
|
||||
Serial.println(");");
|
||||
Serial.print("scale.set_scale(");
|
||||
Serial.print(scaleFactor);
|
||||
Serial.println(");");
|
||||
|
||||
Serial.println("\nPress a key to continue");
|
||||
while (!Serial.available());
|
||||
while (Serial.available()) Serial.read();
|
||||
|
||||
//scale.set_offset(-88627);
|
||||
//scale.set_scale(101.05);
|
||||
|
||||
bascula.scala=scaleFactor;
|
||||
bascula.offSet=scaleOffset;
|
||||
SaveStruct( 0, bascula);//Save to eeprom
|
||||
|
||||
} else {
|
||||
Serial.println("The scale is calibrated... press to continue");
|
||||
while (!Serial.available());
|
||||
while (Serial.available()) Serial.read();
|
||||
scale.set_offset(bascula.offSet);
|
||||
scale.set_scale(bascula.scala);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
if (digitalRead(buttonTare)==false){
|
||||
scale.tare();
|
||||
delay(500);
|
||||
}
|
||||
|
||||
Serial.print("UNITS: ");
|
||||
Serial.println(scale.get_units(15));
|
||||
delay(250);
|
||||
}
|
||||
Reference in New Issue
Block a user