Upps, da sieht man wer die Profi´s sind, mein vollsten Respekt.
Als Anfänger überfordert mich das total, wenn ich ehrlich bin kann ich den Sketch von agmue nicht ansatzweise nachvollziehen und in meinem Projekt verbauen. Von XY_Projekt ansatzweise...... hier bekomme ich die nachkommazahlen nicht angezeigt.(s code)
Hier nochmal mein Vorhaben, es ist ein Computer der mir folgenden String am Stück zu meinem Mega sendet.
Unter umständen können diese sehr schnell in folge reinkommen. <100ms
Nun möchte ich die Bezeichnung und deren Werte aus den String trennen und weiter verarbeiten z.B.
Anzeige von "Runden" Inhalt A1 an Display 2, Inhalt A2 an Display 4 usw. oder durch Wahlschalter umschaltbar auf "Rundenzeiten" dann inhalt RZ1 vorkomma an Display 1, nachkomma an Display2
BRZ:6,777; Mögliche Werte: 0,000 bis 999,999
BRF:Vorname Nachname; Mögliche Werte: Bis zu 25 Buchstaben
BRS:4; Mögliche Werte: 0 bis 8
AR1:0; Mögliche Werte: 1-9999
RZ1:0,000; Mögliche Werte: 0,000 bis 999,999
F1:Vorname Nachname; Mögliche Werte: Bis zu 25 Buchstaben
AR2:0; Mögliche Werte: 1-9999
RZ2:0,000; Mögliche Werte: 0,000 bis 999,999
F2:Vorname Nachname; Mögliche Werte: Bis zu 25 Buchstaben
AR3:0; Mögliche Werte: 1-9999
RZ3:0,000 Mögliche Werte: 0,000 bis 999,999
F3:Vorname Nachname; Mögliche Werte: Bis zu 25 Buchstaben
AR4:0; Mögliche Werte: 1-9999
RZ4:0,000; Mögliche Werte: 0,000 bis 999,999
F4:Vorname Nachname; Mögliche Werte: Bis zu 25 Buchstaben
/n
Der Sketch von agmue hat in den ersten Versuchen auch ganz gut funkuioniert, bis ich bemerkte das die Floatzahlen nach dem Komma nicht richtig dargestellt wurden. Im Prinzip habe ich jetzt dazugelernt das Float großer Mist am Mega ist.
Der weg von XY_Projekt macht da mehr sinn, so meine Vermutung für mein Vorhaben.
Oder wie seht ihr das?
Nur nun der code mit für eine Spur...
// BRZ:6,777;BRF:Paul Mustermann;BRS:4;AR1:0;RZ1:0,000;F1:Friedhelm Busch;AR2:0;RZ2:0,000;F2:Max Jägermeister;AR3:0;RZ3:0,000;F3:Paul Mustermann;AR4:0;RZ4:0,000;F4:Thorsten Hesse;
#include <TM1637Display.h> //Einbinden der Bibliothekt zum ansteuern des 7 Segment-Displays
#define CLK1 22 // für Anzeige-1
#define DIO1 6 // für Anzeige-1
#define CLK2 24 // für Anzeige-2
#define DIO2 7 // für Anzeige-1
//erzeugen des Display 1 bis 8 Objektes mit den Parametern für die PINs
TM1637Display display1(CLK1, DIO1);
TM1637Display display2(CLK2, DIO2);
const byte numChars = 250;
char buf[numChars];
float rz;
int vorkomma;
int nachkomma;
int rz1;
void setup() {
Serial.begin(115200);
Serial3.begin(9600);
Serial.println(F("Start..."));
display1.setBrightness(10);
display2.setBrightness(10);
}
void loop() {
static uint16_t ndx = 0;
char rc;
while (Serial3.available() > 0) {
rc = Serial3.read();
//Serial.write(rc);
if (rc == ';') {
buf[ndx] = '\n';
ndx = 0;
auswertungZeiten();
}
else {
buf[ndx] = rc;
ndx = (1 + ndx) % numChars;
}
}
}
void auswertungZeiten() {
char * bez = strtok(buf, ":");
char * inh = strtok(NULL, ":");
if (!strncmp(bez, "RZ1", numChars)) {
sscanf(inh, "%i,%s", &vorkomma, &buf);
nachkomma = atoi(buf);
rz = vorkomma + (atoi(buf) / 1000.0);
Serial.print(inh);
Serial.print("\t");
Serial.print(rz, 3);
Serial.print("\t");
Serial.print(vorkomma);
Serial.print(F(" , ")); // Die Leerzeichen sind Absicht
Serial.println(nachkomma);
//while (1); // Nach einem Durchlauf stoppen
}
display1.showNumberDec(vorkomma);
display2.showNumberDec(nachkomma, true, 3, 0);
}