Serial Monitor Werte richtig anzeigen lassen

Hallo,
ich hätte eine Frage zum Seriel Monitor.

Ich schicke die Temperaturmessdaten von einem MKR Zero zu einem Mega. Funktioniert soweit, allerdings will ich die Messungen der Unterschiedlichen Sensoren (insgesamt 4) in Spalten organisieren.
Aber die Werte der Thermoelemente hüpfen in den Spalten hin und her..

Kann mir da jemand helfen?

void loop() {
  
  float got_tempout5;
  if (radio.available()) {
    radio.read(&got_tempout5, sizeof(got_tempout5));
  }
  Serial.print(got_tempout5);
  Serial.print("\t");

  float got_tempout6;
  if (radio.available()) {
    radio.read(&got_tempout6, sizeof(got_tempout6));
  }
  Serial.print(got_tempout6);
  Serial.print("\t");
      
  float got_tempout7;
  if (radio.available()) {
    radio.read(&got_tempout7, sizeof(got_tempout7));    
  }
  Serial.print(got_tempout7); 
  Serial.print("/t"); 
        
  float got_tempout8;
  if (radio.available()) {
    radio.read(&got_tempout8, sizeof(got_tempout8));    
  }    
  Serial.print(got_tempout8);
  Serial.println(" ");
      
  
delay(1900);
}

Hier ein Ausschnitt meines Codes. Danke schon mal!

Mit Codefragmenten können wir schlecht etwas anfangen.
Poste den kompletten Sketch.

Und wie bzw. womit überträgst du die Daten von einem zum anderen Controller ?

Danke für die schnelle Rückmeldung.
Mit einem NRF24L01 werden die Daten übertragen.
Thermoelement ist ein MAX31856.

Der Code am Zero:

#include <Adafruit_MAX31856.h>

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(6,7);                    // CNS, CE

const byte address[6] = "00001";

Adafruit_MAX31856 tc5 = Adafruit_MAX31856(5, 11, 12, 13);
Adafruit_MAX31856 tc6 = Adafruit_MAX31856(4, 11, 12, 13);
Adafruit_MAX31856 tc7 = Adafruit_MAX31856(3, 11, 12, 13);
Adafruit_MAX31856 tc8 = Adafruit_MAX31856(2, 11, 12, 13);


void setup() {
  Serial.begin(9000);
   
  tc5.begin();
  tc5.setThermocoupleType(MAX31856_TCTYPE_K);

  tc6.begin();
  tc6.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc7.begin();
  tc7.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc8.begin();
  tc8.setThermocoupleType(MAX31856_TCTYPE_K);
  
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
}

void loop() {

  float tempout5 = tc5.readThermocoupleTemperature();
  radio.write(&tempout5, sizeof(tempout5));
  
  float tempout6 = tc6.readThermocoupleTemperature();
  radio.write(&tempout6, sizeof(tempout6));

  float tempout7 = tc7.readThermocoupleTemperature();
  radio.write(&tempout7, sizeof(tempout7));

  float tempout8 = tc8.readThermocoupleTemperature();
  radio.write(&tempout8, sizeof(tempout8));
  
  
  delay(1800);
}

Der Code am Mega:

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>  


RF24 radio(6, 7);                    // CNS, CE

const byte address[6] = "00001";


void setup() {
  
  Serial.begin(9000);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
}

void loop() {
  
  float got_tempout5;
  if (radio.available()) {
    radio.read(&got_tempout5, sizeof(got_tempout5));
  }
  Serial.print(got_tempout5);
  Serial.print("\t");

  float got_tempout6;
  if (radio.available()) {
    radio.read(&got_tempout6, sizeof(got_tempout6));
  }
  Serial.print(got_tempout6);
  Serial.print("\t");
      
  float got_tempout7;
  if (radio.available()) {
    radio.read(&got_tempout7, sizeof(got_tempout7));    
  }
  Serial.print(got_tempout7); 
  Serial.print("/t"); 
        
  float got_tempout8;
  if (radio.available()) {
    radio.read(&got_tempout8, sizeof(got_tempout8));    
  }    
  Serial.print(got_tempout8);
  Serial.println("");
      
  
delay(1600);
}

Was ich in der Ausgabe erkennen kann, du schreibst mal "/t" und mal "\t".
Das solltest du korrigieren.

Habe ich gerade gesehen allerdings ändert das nicht sehr viel.
Ich bekomme zwar 4 Spalten mit Werten aber wenn ich jetzt die Temperatur am 1. Sensor erhöhe Dann springt der erhöhte Werte von Spalte zu Spalte.

Flo3107:
Habe ich gerade gesehen allerdings ändert das nicht sehr viel.
Ich bekomme zwar 4 Spalten mit Werten aber wenn ich jetzt die Temperatur am 1. Sensor erhöhe Dann springt der erhöhte Werte von Spalte zu Spalte.

Zeig doch mal einen Bildschirmausdruck, damit wir uns das auch genau vorstellen können.

Ich habe es jetzt mal mit zwei Werten aufgezeichnet um es besser zu verdeutlichen.

Habe die codes noch ein bisschen verändert.
Hier nochmal die neuen Codes:

Zero:

#include <Adafruit_MAX31856.h>

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(6,7);                    // CNS, CE

const byte address[6] = "00001";


//Adafruit_MAX31856 tc5 = Adafruit_MAX31856(5, 11, 12, 13);
//Adafruit_MAX31856 tc6 = Adafruit_MAX31856(4, 11, 12, 13);
Adafruit_MAX31856 tc7 = Adafruit_MAX31856(3, 11, 12, 13);
Adafruit_MAX31856 tc8 = Adafruit_MAX31856(2, 11, 12, 13);


void setup() {
  Serial.begin(9000);
   
//  tc5.begin();
//  tc5.setThermocoupleType(MAX31856_TCTYPE_K);
//
//  tc6.begin();
//  tc6.setThermocoupleType(MAX31856_TCTYPE_K);
//  
  tc7.begin();
  tc7.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc8.begin();
  tc8.setThermocoupleType(MAX31856_TCTYPE_K);
  
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_LOW);
  radio.stopListening();
}

void loop() {

//  float tempout5 = tc5.readThermocoupleTemperature();
//  radio.write(&tempout5, sizeof(tempout5));
//  
//  float tempout6 = tc6.readThermocoupleTemperature();
//  radio.write(&tempout6, sizeof(tempout6));

  float tempout7 = tc7.readThermocoupleTemperature();
  radio.write(&tempout7, sizeof(tempout7));

  float tempout8 = tc8.readThermocoupleTemperature();
  radio.write(&tempout8, sizeof(tempout8));
  
  
  delay(1800);
}

und Mega:

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>  


RF24 radio(6, 7);                    // CNS, CE

const byte address[6] = "00001";


void setup() {
  
  Serial.begin(9000);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_LOW);
  radio.startListening();
}

void loop() {
  
//  float got_tempout5;
//  if (radio.available()) {
//    radio.read(&got_tempout5, sizeof(got_tempout5));
//  }
//  Serial.print(got_tempout5);
//  Serial.print("\t");
//  
//
//  float got_tempout6;
//  if (radio.available()) {
//    radio.read(&got_tempout6, sizeof(got_tempout6));
//  }
//  Serial.print(got_tempout6);
//  Serial.print("\t");
//  
//      
  float got_tempout7;
  if (radio.available()) {
    radio.read(&got_tempout7, sizeof(got_tempout7));
  }
  Serial.print(got_tempout7); 
  Serial.print("\t"); 

        
  float got_tempout8;
  if (radio.available()) {
    radio.read(&got_tempout8, sizeof(got_tempout8));
  }
  Serial.print(got_tempout8);
  Serial.println("");
  


//  Serial.print(got_tempout5);
//  Serial.print("\t");
//
//  Serial.print(got_tempout6);
//  Serial.print("\t");
//
//  Serial.print(got_tempout7); 
//  Serial.print("\t"); 
//
//  Serial.print(got_tempout8);
//  Serial.println("");
  
delay(2200);
}

Die Ausgabe ist als Bild angehängt.
Danke und LG.

Okeeeeeh

Das ist ein schööönes Bild!
Nur: Was hättest statt Dessen erwartet?
Ich sehe zwei schöne Spalten mit Temperatur-Werten, Die auch Beide im normalem Bereich zu sein scheinen - von hier aus: Alles bestens!

MfG

Nun ich erhöhe die Tempereatur des zweiten sensors (rechte spalte) auf ca. 30 grad.. der andere sensor bleibt unverändert.
Und dann springt plötzlich der erhöhte temperaturwert in die linke zeile und kurze zeit später wieder zurück.

ich hätte gerne dass die temperatur vom zweiten sensor immer in der rechten spalte angezeigt wird und die des ersten sensors in der linken spalte..
nur scheint es, dass beim übertragen der daten da oft etwas durcheinander kommt..

wenn ich die daten nicht über den nrf24l01 scchicke sondern direkt am pc anstecke dann hüpfen die werte nicht durcheinander..

habe ich da etwas übersehen.. die Funktion serial.print("\t") heißt doch, dass eine neue spalte begonnen wird?

oder kann ich mit der Übertragungsrate etwas ändern? high, low etc..?

Danke und LG Flo

Hi

Möglich, daß bei der Funk-Übertragung irgend ein Müll raus kommt - DAS musst Du prüfen, also, ob die empfangenen Daten 'valide' sind - also ok.
Wie Du Das machst: Dein Part - die Funkstrecke scheint hier keine Intelligenz beizusteuern.
Wenn, aus welchen Gründen auch immer, die Werte zerhackt ankommen, musst Du diese Sendung weg werfen - Da könnte 'sonst was' drin stehen - aber eher nicht die Werte, Die abgesendet wurden.

MfG

Hallo,

ich kenne die lib nicht , vermute aber mal was das ankommt ist eine Zeichenkette , vermutlich sind irgendelche Zeichen mit drin die nicht da rein gehören. Lass dir die einzelnen Zeichen doch mal hex anzeigen. Wenn dann was drin ist was keine Zahl ist und kein Punkt dann ist das ungültig. Eventuell kommst du mit atof weiter und machst aus der Zeichenkette eine Zahl

Heinz

Du verwendest die Referenz auf eine Variable, die keinen Wert hat, daher könntest Du mal dies probieren:

float got_tempout7 = 0;

Oder auch mal dies:

  float tmp = 0;
  if (radio.available()) {
    radio.read(&tmp, sizeof(got_tempout7));
  }
  float got_tempout7 = tmp;
  Serial.print(got_tempout7);
  Serial.print("\t");

Erstmal vielen Dank für die ganzen Antworten und Ideen für mein Problem.

Ich habe es jetzt so weit geschafft, dass die einzelnen Werte schön untereinander, Spalte für Spalte angezeigt werden.

Mein nächstes Problem betriftt die Anzahl der Daten. Bei 3 Thermoelementen funktioniert die Übertragung problemlos. Ich hätte aber gerne 8 Thermoelemente am Arduino.

Mein neuer Code:

Zero:

#include <Adafruit_MAX31856.h>

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(6,7);                    // CNS, CE

const byte address[6] = "00001";


//Adafruit_MAX31856 tc1 = Adafruit_MAX31856(10, 11, 12, 13);
//Adafruit_MAX31856 tc2 = Adafruit_MAX31856(9, 11, 12, 13);
//Adafruit_MAX31856 tc3 = Adafruit_MAX31856(8, 11, 12, 13);
//Adafruit_MAX31856 tc4 = Adafruit_MAX31856(7, 11, 12, 13);
//Adafruit_MAX31856 tc5 = Adafruit_MAX31856(5, 11, 12, 13);
Adafruit_MAX31856 tc6 = Adafruit_MAX31856(4, 11, 12, 13);
Adafruit_MAX31856 tc7 = Adafruit_MAX31856(3, 11, 12, 13);
Adafruit_MAX31856 tc8 = Adafruit_MAX31856(2, 11, 12, 13);


void setup() {
  Serial.begin(9000);

//  tc1.begin();
//  tc1.setThermocoupleType(MAX31856_TCTYPE_K);
//
//  tc2.begin();
//  tc2.setThermocoupleType(MAX31856_TCTYPE_K);
//  
//  tc3.begin();
//  tc3.setThermocoupleType(MAX31856_TCTYPE_K);
//  
//  tc4.begin();
//  tc4.setThermocoupleType(MAX31856_TCTYPE_K);
//
//  tc5.begin();
//  tc5.setThermocoupleType(MAX31856_TCTYPE_K);
//
  tc6.begin();
  tc6.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc7.begin();
  tc7.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc8.begin();
  tc8.setThermocoupleType(MAX31856_TCTYPE_K);

  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_250KBPS );
  radio.stopListening();
}

void loop() {

//  float tempout1 = tc1.readThermocoupleTemperature();
//  
//  float tempout2 = tc2.readThermocoupleTemperature();
//
//  float tempout3 = tc3.readThermocoupleTemperature();

//  float tempout4 = tc4.readThermocoupleTemperature();
//
//  float tempout5 = tc5.readThermocoupleTemperature();
//  
  float tempout6 = tc6.readThermocoupleTemperature();

  float tempout7 = tc7.readThermocoupleTemperature();

  float tempout8 = tc8.readThermocoupleTemperature();
  

//  radio.write(&tempout1, sizeof(tempout1));
//  radio.write(&tempout2, sizeof(tempout2));
//  radio.write(&tempout3, sizeof(tempout3));
//  radio.write(&tempout4, sizeof(tempout4));
//  radio.write(&tempout5, sizeof(tempout5));
  radio.write(&tempout6, sizeof(tempout6));
  radio.write(&tempout7, sizeof(tempout7));
  radio.write(&tempout8, sizeof(tempout8));

}

Mega:

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>  


RF24 radio(6, 7);                    // CNS, CE

const byte address[6] = "00001";


void setup() {
  
  Serial.begin(9000);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_250KBPS );
  radio.startListening();
}

void loop() {

//  float got_tempout1;
//  if (radio.available()) {
//    radio.read(&got_tempout1, sizeof(got_tempout1));
//  }
//
//  float got_tempout2;
//  if (radio.available()) {
//    radio.read(&got_tempout2, sizeof(got_tempout2));
//  }
//
//  float got_tempout3;
//  if (radio.available()) {
//    radio.read(&got_tempout3, sizeof(got_tempout3));
//  }
//
//  float got_tempout4 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout3, sizeof(got_tempout4));
//  }
//  
//  float got_tempout5 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout5, sizeof(got_tempout5));
//  }
//
  float got_tempout6 = 0;
  if (radio.available()) {
    radio.read(&got_tempout6, sizeof(got_tempout6));
  }
     
  float got_tempout7 = 0;
  if (radio.available()) {
    radio.read(&got_tempout7, sizeof(got_tempout7));
  }
        
  float got_tempout8 = 0;
  if (radio.available()) {
    radio.read(&got_tempout8, sizeof(got_tempout8));
  }


//  Serial.print(got_tempout1);
//  Serial.print("\t");
//  Serial.print(got_tempout2);
//  Serial.print("\t");
//  Serial.print(got_tempout3);
//  Serial.print("\t");
//  Serial.print(got_tempout4);
//  Serial.print("\t");
//  Serial.print(got_tempout5);
//  Serial.print("\t");
  Serial.print(got_tempout6);
  Serial.print("\t");
  Serial.print(got_tempout7); 
  Serial.print("\t"); 
  Serial.print(got_tempout8);
  Serial.println(" ");

delay(3200);
}

1-5 sind hier auskommentiert. Für 6-8 funktioniert es... sobald ich noch ein weiteres dazuschalte oder gar alle 8 dann bekomme ich zwar 8 spalten aber es zeigt mir nur die Werte 0.00 oder -0.01 an.

Kann es sein dass dann einfach zuviele daten gesendet werden bzw. wie kann ich das verbessern?

Danke!

LG Flo

Für 6-8 funktioniert es... sobald ich noch ein weiteres dazuschalte

Wenn du die Doku zu deinen Modulen lesen würdest, dann könnte dir auffallen, dass die Payloadsize maximal auf 32 Byte einstellbar ist.

Wie groß sind 8 Float?

Übertrage alle Daten in einem Paket, Sortierproblem gelöst.

Du solltest einen float Array nehmen, oder eine struct/class.
Ich würde letzteres nehmen, da ich Paketen gerne eine Anzeige-Funktion mitgebe.
In deinem Fall wäre vielleicht auch eine Einlesen-Funktion sinnvoll.

Senden und Empfangen sollten das am Besten gleichartig machen.

Oke und wie mache ich das am besten mit einem array.. bin noch eher ein neuling auf diesem gebiet und kenne noch nicht alle befehle.

ich hätte es jetzt so gemacht aber da ist ein fehler im code denn ich bekomme keine richtigen werte.

Zero:

// Transmitter Code

// MAX31856


#include <Adafruit_MAX31856.h>

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(6,7);                    // CNS, CE

const byte address[6] = "00001";


Adafruit_MAX31856 tc1 = Adafruit_MAX31856(10, 11, 12, 13);
Adafruit_MAX31856 tc2 = Adafruit_MAX31856(9, 11, 12, 13);
Adafruit_MAX31856 tc3 = Adafruit_MAX31856(8, 11, 12, 13);
Adafruit_MAX31856 tc4 = Adafruit_MAX31856(7, 11, 12, 13);
Adafruit_MAX31856 tc5 = Adafruit_MAX31856(5, 11, 12, 13);
Adafruit_MAX31856 tc6 = Adafruit_MAX31856(4, 11, 12, 13);
Adafruit_MAX31856 tc7 = Adafruit_MAX31856(3, 11, 12, 13);
Adafruit_MAX31856 tc8 = Adafruit_MAX31856(2, 11, 12, 13);


void setup() {
  Serial.begin(9000);

  tc1.begin();
  tc1.setThermocoupleType(MAX31856_TCTYPE_K);

  tc2.begin();
  tc2.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc3.begin();
  tc3.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc4.begin();
  tc4.setThermocoupleType(MAX31856_TCTYPE_K);

  tc5.begin();
  tc5.setThermocoupleType(MAX31856_TCTYPE_K);

  tc6.begin();
  tc6.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc7.begin();
  tc7.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc8.begin();
  tc8.setThermocoupleType(MAX31856_TCTYPE_K);

  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_250KBPS );
  radio.stopListening();
}

void loop() {

float tempout[8];

float i;
  
  tempout[0] = tc1.readThermocoupleTemperature();
  
  tempout[1] = tc2.readThermocoupleTemperature();

  tempout[2] = tc3.readThermocoupleTemperature();

  tempout[3] = tc4.readThermocoupleTemperature();

  tempout[4] = tc5.readThermocoupleTemperature();
  
  tempout[5] = tc6.readThermocoupleTemperature();

  tempout[6] = tc7.readThermocoupleTemperature();

  tempout[7] = tc8.readThermocoupleTemperature();
  
radio.write(&tempout[8], sizeof(tempout[8]));

//  radio.write(&tempout1, sizeof(tempout1));
//  radio.write(&tempout2, sizeof(tempout2));
//  radio.write(&tempout3, sizeof(tempout3));
//  radio.write(&tempout4, sizeof(tempout4));
//  radio.write(&tempout5, sizeof(tempout5));
//  radio.write(&tempout6, sizeof(tempout6));
//  radio.write(&tempout7, sizeof(tempout7));
//  radio.write(&tempout8, sizeof(tempout8));

}

Mega:

// Receiver Code

// MAX31856


#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>  


RF24 radio(6, 7);                    // CNS, CE

const byte address[6] = "00001";


void setup() {
  
  Serial.begin(9000);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_250KBPS );
  radio.startListening();
}

void loop() {

float got_tempout[8];

float i;

if (radio.available()) {
  radio.read(&got_tempout[8], sizeof(got_tempout[8]));
}

for (byte i = 0; i < 8; i = i + 1) {
  Serial.print(got_tempout[i]);
  //Serial.println("\t");
  //Serial.print(" ");
}

//  float got_tempout1;
//  if (radio.available()) {
//    radio.read(&got_tempout1, sizeof(got_tempout1));
//  }
//
//  float got_tempout2;
//  if (radio.available()) {
//    radio.read(&got_tempout2, sizeof(got_tempout2));
//  }
//
//  float got_tempout3;
//  if (radio.available()) {
//    radio.read(&got_tempout3, sizeof(got_tempout3));
//  }
//
//  float got_tempout4 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout4, sizeof(got_tempout4));
//  }
//  
//  float got_tempout5 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout5, sizeof(got_tempout5));
//  }
//
//  float got_tempout6 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout6, sizeof(got_tempout6));
//  }
//     
//  float got_tempout7 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout7, sizeof(got_tempout7));
//  }
//        
//  float got_tempout8 = 0;
//  if (radio.available()) {
//    radio.read(&got_tempout8, sizeof(got_tempout8));
//  }


//  Serial.print(got_tempout1);
//  Serial.print("\t");
//  Serial.print(got_tempout2);
//  Serial.print("\t");
//  Serial.print(got_tempout3);
//  Serial.print("\t");
//  Serial.print(got_tempout4);
//  Serial.print("\t");
//  Serial.print(got_tempout5);
//  Serial.print("\t");
//  Serial.print(got_tempout6);
//  Serial.print("\t");
//  Serial.print(got_tempout7); 
//  Serial.print("\t"); 
//  Serial.print(got_tempout8);
//  Serial.println(" ");

delay(3200);
}

LG Flo

radio.write(&tempout[8], sizeof(tempout[8]));

Mega Quatsch. Das überträgt einen float hinter dem Array.

radio.write(tempout, sizeof(tempout));

Gleiches gilt für das Empfangen.

radio.read(&got_tempout[8], sizeof(got_tempout[8]));

Lese einen float hinter den Buffer.
Das ist noch übler, da andere Variablen überschrieben werden (können).

radio.read(got_tempout, sizeof(got_tempout);

Ein & vor den Arrays schadet nicht, bringt aber auch nichts.
Wenn du eine struct/class benutzen willst, dann muss das & bei read/write davor.

Im Sender ist

  radio.stopListening();

überflüssig, es dient dazu ein startListening zu beenden.

Wenn du in beiden Sketchen

  radio.enableDynamicPayloads();

benutzt, werden deine Pakete nicht alle auf 32 Bytes verlängert und somit schneller übertragen.

Dein Sender benötigt eine Bremse, wenn das Ermitteln der Messwerte nicht sehr lange dauert.
Wie oft willst du die Werte denn sehen?
Zur Anzeige reichen meiner Ansicht nach zwei Pakete pro Sekunde meistens aus.

Danke für deine Geduld und Hilfe.:wink:
Ich möchte die Werte ca. alle 2 Sekunden sehen..

Ich habe meinen code jetzt angepasst. Die Werte 4-8 funktionieren. Die ersten 3 Werte werden allerdings mit -0.01 angezeigt.

tx:

// Transmitter Code

// MAX31856


#include <Adafruit_MAX31856.h>

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(6,7);                    // CNS, CE

const byte address[6] = "00001";


Adafruit_MAX31856 tc1 = Adafruit_MAX31856(10, 11, 12, 13);
Adafruit_MAX31856 tc2 = Adafruit_MAX31856(9, 11, 12, 13);
Adafruit_MAX31856 tc3 = Adafruit_MAX31856(8, 11, 12, 13);
Adafruit_MAX31856 tc4 = Adafruit_MAX31856(7, 11, 12, 13);
Adafruit_MAX31856 tc5 = Adafruit_MAX31856(5, 11, 12, 13);
Adafruit_MAX31856 tc6 = Adafruit_MAX31856(4, 11, 12, 13);
Adafruit_MAX31856 tc7 = Adafruit_MAX31856(3, 11, 12, 13);
Adafruit_MAX31856 tc8 = Adafruit_MAX31856(2, 11, 12, 13);


void setup() {
  Serial.begin(9000);

  tc1.begin();
  tc1.setThermocoupleType(MAX31856_TCTYPE_K);

  tc2.begin();
  tc2.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc3.begin();
  tc3.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc4.begin();
  tc4.setThermocoupleType(MAX31856_TCTYPE_K);

  tc5.begin();
  tc5.setThermocoupleType(MAX31856_TCTYPE_K);

  tc6.begin();
  tc6.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc7.begin();
  tc7.setThermocoupleType(MAX31856_TCTYPE_K);
  
  tc8.begin();
  tc8.setThermocoupleType(MAX31856_TCTYPE_K);

  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_250KBPS );
  radio.enableDynamicPayloads();
}

void loop() {

float tempout[8];

float i;
  
  tempout[0] = tc1.readThermocoupleTemperature();
  
  tempout[1] = tc2.readThermocoupleTemperature();

  tempout[2] = tc3.readThermocoupleTemperature();

  tempout[3] = tc4.readThermocoupleTemperature();

  tempout[4] = tc5.readThermocoupleTemperature();
  
  tempout[5] = tc6.readThermocoupleTemperature();

  tempout[6] = tc7.readThermocoupleTemperature();

  tempout[7] = tc8.readThermocoupleTemperature();
  
radio.write(tempout, sizeof(tempout));

delay(100);
}

rx:

// Receiver Code

// MAX31856


#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>  


RF24 radio(6, 7);                    // CNS, CE

const byte address[6] = "00001";


void setup() {
  
  Serial.begin(9000);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_250KBPS );
  radio.enableDynamicPayloads();
  radio.startListening();
}

void loop() {

float got_tempout[8];

float i;

if (radio.available()) {
  radio.read(got_tempout, sizeof(got_tempout));
}

for (byte i = 0; i < 8; i = i + 1) {
  Serial.print(got_tempout[i]);
  Serial.println("\t");
}


delay(2200);
}

In der Form wird jetzt auch alles in eine Spalte geschrieben.. wie schaffe ich es, dass die 8 Werte im array jeweils untereinader in 8 spalten geschrieben werden?

LG Flo

Warum benutzt du Software SPI auf den Hardware SPI Pins?

Warum nimmst du keinen Array für die acht Sensoren?

Warum benutzt du Pin 7 doppelt?

Ich möchte die Werte ca. alle 2 Sekunden sehen..

delay(100);

Passt irgendwie nicht zusammen und berücksichtigt keine Laufzeiten der Sensoren.
Nimm millis().

for (byte i = 0; i < 8; i = i + 1) {
  Serial.print(got_tempout[i]);
  Serial.println("\t");
}

Bis auf den ersten Wert werden alle eingerückt und untereinander geschrieben? Komisch.

for (byte i = 0; i < 8; i = i + 1) {
  Serial.print(got_tempout[i]);
  Serial.println(F", "));
}
Serial.println();

So wären sie nebeneinander und mit ", " getrennt.

Das Drucken gehört in das if (radio.available()),
delays gehören in kein Programm das Empfangen soll, ersatzlos streichen.