Считывание двух усилителей датчика нагрузки 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();
}
@Jacob Huggins, 👍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
.
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
Создайте второй экземпляр класса HX711 и "начните" его с двух разных выводов ввода-вывода., @Majenko
сделайте так, чтобы в вашем коде было что-то вроде этих двух ...
масштаб1.начало(DOUT1, CLK1); "и
масштаб2.начало(DOUT2, CLK2);.... начните с переименования" масштаб.
кмасштабу1.
... затем продублируйте все " масштабы1.` линии, @jsotola@jsotola, я пробовал это, но когда я затем пытаюсь прочитать это, это говорит мне, что scale2 не был объявлен в этой области, @Jacob Huggins
посмотрите на **каждую строку** в вашем коде выше, которая содержит слово " масштаб` ... сделайте две линии из каждой из этих линий, @jsotola