You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.3 KiB
138 lines
4.3 KiB
/**
|
|
*
|
|
* HX711 library for Arduino - example file
|
|
* https://github.com/bogde/HX711
|
|
*
|
|
* MIT License
|
|
* (c) 2018 Bogdan Necula
|
|
*
|
|
**
|
|
|
|
#include "HX711.h"
|
|
|
|
|
|
// HX711 circuit wiring
|
|
const int LOADCELL_DOUT_PIN = 21;
|
|
const int LOADCELL_SCK_PIN = 20;
|
|
|
|
|
|
HX711 scale;
|
|
|
|
void setup() {
|
|
Serial.begin(38400);
|
|
Serial.println("HX711 Demo");
|
|
|
|
Serial.println("Initializing the scale");
|
|
|
|
// Initialize library with data output pin, clock input pin and gain factor.
|
|
// Channel selection is made by passing the appropriate gain:
|
|
// - With a gain factor of 64 or 128, channel A is selected
|
|
// - With a gain factor of 32, channel B is selected
|
|
// By omitting the gain factor parameter, the library
|
|
// default "128" (Channel A) is used here.
|
|
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
|
|
|
|
Serial.println("Before setting up the scale:");
|
|
Serial.print("read: \t\t");
|
|
Serial.println(scale.read()); // print a raw reading from the ADC
|
|
|
|
Serial.print("read average: \t\t");
|
|
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
|
|
|
|
Serial.print("get value: \t\t");
|
|
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)
|
|
|
|
Serial.print("get units: \t\t");
|
|
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
|
|
// by the SCALE parameter (not set yet)
|
|
|
|
scale.set_scale(1000.f); // this value is obtained by calibrating the scale with known weights; see the README for details
|
|
scale.tare(); // reset the scale to 0
|
|
|
|
Serial.println("After setting up the scale:");
|
|
|
|
Serial.print("read: \t\t");
|
|
Serial.println(scale.read()); // print a raw reading from the ADC
|
|
|
|
Serial.print("read average: \t\t");
|
|
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
|
|
|
|
Serial.print("get value: \t\t");
|
|
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()
|
|
|
|
Serial.print("get units: \t\t");
|
|
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
|
|
// by the SCALE parameter set with set_scale
|
|
|
|
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), 1);
|
|
|
|
scale.power_down(); // put the ADC in sleep mode
|
|
delay(1000);
|
|
scale.power_up();
|
|
}
|
|
|
|
|
|
|
|
/* #include <Arduino.h>
|
|
#include <HX711.h>
|
|
#include <RtcDS3231.h>
|
|
|
|
|
|
|
|
int RXLED = 17; // The RX LED has a defined Arduino pin
|
|
// Note: The TX LED was not so lucky, we'll need to use pre-defined
|
|
// macros (TXLED1, TXLED0) to control that.
|
|
// (We could use the same macros for the RX LED too -- RXLED1,
|
|
// and RXLED0.)
|
|
|
|
// 1. HX711 circuit wiring
|
|
const int LOADCELL_DOUT_PIN = 21;
|
|
const int LOADCELL_SCK_PIN = 20;
|
|
|
|
// 2. Adjustment settings
|
|
const long LOADCELL_OFFSET = 50682624;
|
|
const long LOADCELL_DIVIDER = 5895655;
|
|
|
|
HX711 loadcell;
|
|
|
|
void setup()
|
|
{
|
|
pinMode(RXLED, OUTPUT); // Set RX LED as an output
|
|
// TX LED is set as an output behind the scenes
|
|
|
|
Serial.begin(9600); //This pipes to the serial monitor
|
|
Serial.println("Initialize Serial Monitor");
|
|
|
|
Serial1.begin(9600); //This is the UART, pipes to sensors attached to board
|
|
Serial1.println("Initialize Serial Hardware UART Pins");
|
|
|
|
// 3. Initialize library
|
|
loadcell.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
|
|
loadcell.set_scale(LOADCELL_DIVIDER);
|
|
loadcell.set_offset(LOADCELL_OFFSET);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// Serial.println("Hello world!!!"); // Print "Hello World" to the Serial Monitor
|
|
// Serial1.println("Hello! Can anybody hear me?"); // Print "Hello!" over hardware UART
|
|
|
|
// 4. Acquire reading
|
|
Serial.print("Weight: ");
|
|
Serial.println(loadcell.get_units(10), 2);
|
|
|
|
digitalWrite(RXLED, LOW); // set the RX LED ON
|
|
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
|
|
delay(200); // wait for a second
|
|
|
|
digitalWrite(RXLED, HIGH); // set the RX LED OFF
|
|
TXLED1; //TX LED macro to turn LED ON
|
|
delay(200); // wait for a second
|
|
} */ |