Подключение нескольких независимых тензодатчиков одновременно

Здравствуйте, товарищи!
В общем, есть задача подключить к ардуино 4 независимых тензодатчика и снимать с них показания. Для каждого датчика есть свой аналого-цифровой преобразователь (hx711). И у меня никак не получается реализовать это программно.
Подскажите, как это сделать?
Пытался что то придумать на основе вот этого кода.

#include "HX711.h"                                            // подключаем библиотеку для работы с тензодатчиком

#define DT  2                                                // Указываем номер вывода, к которому подключен вывод DT  датчика
#define SCK 3                                                // Указываем номер вывода, к которому подключен вывод SCK датчика

HX711 scale;                                                  // создаём объект scale

float calibration_factor = 7.674;                            // вводим калибровочный коэффициент
float units;                                                  // задаём переменную для измерений в граммах
float ounces;                                                 // задаём переменную для измерений в унциях

void setup() {
  Serial.begin(9600);                                         // инициируем работу последовательного порта на скорости 9600 бод
  scale.begin(DT, SCK);                                       // инициируем работу с датчиком
  scale.set_scale();                                          // выполняем измерение значения без калибровочного коэффициента
  scale.tare();                                               // сбрасываем значения веса на датчике в 0
  scale.set_scale(calibration_factor);                        // устанавливаем калибровочный коэффициент
}

void loop() {
  Serial.print("Reading: ");                                  // выводим текст в монитор последовательного порта
  for (int i = 0; i < 10; i ++) {                             // усредняем показания, считав значения датчика 10 раз
    units = + scale.get_units(), 10;                          // суммируем показания 10 замеров
  }
  units = units / 10.0;                                         // усредняем показания, разделив сумму значений на 10
  ounces = units * 0.035274;                                  // переводим вес из унций в граммы
  Serial.print(ounces);                                       // выводим в монитор последовательного порта вес в граммах
  Serial.println(" grams");                                   // выводим текст в монитор последовательного порта
 
}

Код рабочий. С одним тензодатчиком всё работает корректно

А где попытка сделать это хотя бы с двумя ?

А как датчики подключены?

Вообще-то начинать нужно со схемы.
И только потом под схему делать скетч.
Пока нет схемы, обсуждать нечего.

1 лайк

думаете, а вдруг на этой библиотеке это не возможно? видимо надо начинать с изучения возможностей библиотеки? я так щетаю - ИМХО

А как вы собираетесь одновременно считывать данные, если вы постоянно считываете с одного 10 раз подряд?
Может организовать цикл сначала по тензодатчикам 1…4, записывать в двухмерный массив, и так десять раз.
А потом уже усреднять.
И кстати Частота измерений: 10/80 Гц; модуля
то есть на 10 измерений у вас уйдет от 0,125 до 1 сек. на 1 канал