Problem with Sending Serial Data

Hello,

in my project I´m reading out 6 loadscales with an HX711 and sending the data to an Arduino Mega2560. If I read three L/Cs everything works stable.

With four and six L/Cs one of the signals is jumping, independent of the physical L/C, because the indexing of the L/Cs is new with every restart of the serial connection.

Thats why I think there is a programming mistake.

There is also a video: https://vimeo.com/220084969

What could I do to avoid that?

Here´s the code:

#include "HX711.h"

// Two Load Cells, Common Clock and Individual Data I/O

HX711 scale;

void setup() {
  Serial.begin(19200);
  Serial.println("HX711 Dual L/C Demo");

 // Serial.println("Initializing the scale");
  // parameter "gain" is ommited; the default value 128 is used by the library
  // HX711.DOUT    - pin #A1
  // HX711.PD_SCK  - pin #A0
  scale.begin(A1, A0);

 // 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(0.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() {
  scale.begin(A1, A0);
//  
////  Serial.print("read LC1:\t");
////  Serial.println(scale.get_units(), 1);
  Serial.println(scale.read()); 
  Serial.print(" ");
//  
////  Serial.print("\t| LC1 avg:\t");
////  Serial.println(scale.get_units(10), 1);

  scale.begin(A2, A0);
//  
////  Serial.print("read LC2:\t");
////  Serial.println(scale.get_units(), 1);
  Serial.println(scale.read()); 
  Serial.print(" ");
  
//  Serial.print("\t| LC2 avg:\t");
//  Serial.println(scale.get_units(10), 1);
//
  scale.begin(A3, A0);
//  
////  Serial.print("read LC1:\t");
////  Serial.println(scale.get_units(), 1);
  Serial.println(scale.read()); 
  Serial.print(" ");
//  
////  Serial.print("\t| LC1 avg:\t");
////  Serial.println(scale.get_units(10), 1);
//
  scale.begin(A4, A0);
////  
//////  Serial.print("read LC2:\t");
//////  Serial.println(scale.get_units(), 1);
  Serial.println(scale.read()); 
  Serial.print(" ");
//  
////  Serial.print("\t| LC2 avg:\t");
////  Serial.println(scale.get_units(10), 1);
//
  scale.begin(A5, A0);
//  
////  Serial.print("read LC1:\t");
////  Serial.println(scale.get_units(), 1);
  Serial.println(scale.read()); 
  Serial.print(" ");
//  
////  Serial.print("\t| LC1 avg:\t");
////  Serial.println(scale.get_units(10), 1);
//
  scale.begin(A6, A0);
////  
//////  Serial.print("read LC2:\t");
//////  Serial.println(scale.get_units(), 1);
  Serial.println(scale.read()); 
  Serial.print(" ");
  
//  Serial.print("\t| LC2 avg:\t");
//  Serial.println(scale.get_units(10), 1);


////////////////////////////////////////////


//  scale.power_down();                    // put the ADC in sleep mode
  delay(10);                        // doesnt affect anything
//  scale.power_up();

why are you constntly calling begin() in loop?

perhaps you should also add more comments, I could almost read your code. ;)

your doing a lot of printing but we cant see where/how you are doing the reading of the scales.

post ALL your code.

if youre using 6 scales, start all 6 at once. 2 groups of 3, start one group then the other.