Считывание двух усилителей датчика нагрузки HX711

Мне нужно прочитать два значения из тензодатчиков hx711, подключенных к тензометрическим датчикам. Я нашел приведенный ниже код, который читает один показатель, но, будучи самоучкой и имея небольшой опыт, я понятия не имею, как адаптировать его для работы с двумя, может ли кто-нибудь помочь?
Мне нужны два отдельных показания, а не комбинированное Заранее спасибо и отдайте должное sparkfun, который написал этот код.

#include "HX711.h"

#define calibration_factor -7050.0 //This value is obtained using the SparkFun_HX711_Calibration sketch

#define DOUT  3
#define CLK  2

HX711 scale;

void setup() {
  Serial.begin(9600);
  Serial.println("HX711 scale demo");

  scale.begin(DOUT, CLK);
  scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
  scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0

  Serial.println("Readings:");
}

void loop() {
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1); //scale.get_units() returns a float
  Serial.print(" lbs"); //You can change this to kg but you'll need to refactor the calibration_factor
  Serial.println();
}

, 👍1

Обсуждение

Создайте второй экземпляр класса HX711 и "начните" его с двух разных выводов ввода-вывода., @Majenko

сделайте так, чтобы в вашем коде было что-то вроде этих двух ... масштаб1.начало(DOUT1, CLK1); "и масштаб2.начало(DOUT2, CLK2);.... начните с переименования" масштаб. к масштабу1. ... затем продублируйте все " масштабы1.` линии, @jsotola

@jsotola, я пробовал это, но когда я затем пытаюсь прочитать это, это говорит мне, что scale2 не был объявлен в этой области, @Jacob Huggins

посмотрите на **каждую строку** в вашем коде выше, которая содержит слово " масштаб` ... сделайте две линии из каждой из этих линий, @jsotola


1 ответ


1

Строка:

HX711 scale;

называется "создание экземпляра объекта". Он создает новый объект под названием scale, который является экземпляром класса HX711. Именно этот "объект" является вашим интерфейсом к физическому устройству HX711.

Чтобы использовать два из них, вам сначала нужно иметь два объекта - по одному для каждого HX711. Вы можете называть их как угодно. Например:

HX711 scale1;
HX711 scale2;

Строка:

scale.begin(DOUT, CLK);

именно там он сообщает объекту HX711, к каким контактам подключен чип HX711. В этом случае DOUT и CLK, которые вы определили как 3 и 2 соответственно. С таким же успехом вы могли бы написать:

scale.begin(3, 2);

Каждый объект должен быть "начат", поэтому вам потребуется начало для каждого создаваемого объекта:

scale1.begin(3, 2); // DOUT = 3, CLK = 2
scale2.begin(5, 4); // DOUT = 5, CLK = 4

Теперь для каждой операции, которую вы выполняли в масштабе, вы вместо этого выполняли бы над двумя своими новыми объектами:

scale1.set_scale(calibration_factor);
scale2.set_scale(calibration_factor);

и т.д.

И когда вы хотите провести измерение, вы просто выбираете, с какого объекта читать:

Serial.print(scale1.get_units(), 1);

или

Serial.print(scale2.get_units(), 1);

Вы можете добавить третью, создав и используя scale3 точно так же, как scale1 и scale2.

,