Serielle Datenstring vom Computer im Adruino Mega einlesen und aufteilen

Guten Morgen!

Benziner:
Werde mir die ESP32 mal bestellen, wer weiß wozu es gut ist :wink:

Ich habe bei AZ-Delivery bestellt, einmal Anfang und einmal Ende letzten Jahres. Bei der ersten Bestellung habe ich ESP32 Dev Kit C bestellt und erhalten, beim zweiten Mal ESP32 Dev Kit C V4.

Bei meinem Dev Kit C braucht es noch einen 10 µF Kondensator zwischen EN und GND, damit der Bootloader ein neues Programm entgegen nimmt, bei meinem Dev Kit C V4 ist der nicht notwendig. Ob man dieses Verhalten verallgemeinern kann, weiß ich nicht und ob es zusammen mit der versprochenen größeren Reichweite den Mehrpreis rechtfertigt, mußt Du selbst entscheiden. Ich wollte nur auf die Unterschiede hinweisen.

Ein fehlerhafter ESP32 wurde von AZ-Delivery sofort umgetauscht, eine Qualitätseingangsprüfung scheint es aber nicht zu geben.

Die Links dienen der Illustration und stellen keine Kaufenpfehlung dar.

Guten Abend, ich hoffe Ihr hattet trotz Corona ein schönes Osterwochenende und seit gut drauf und gesund. Ich muss mich erstmal entschuldigen das ich mich nicht abgemeldet habe. Ich weiß nicht ob Ihr es auch kennt, das will’ste mal eben was ausprobieren…und zack ist ne Woche um. Nächste mal sag ich vorher Bescheid. Nun ja, das mit den NFR24 hat mir keine ruhe gelassen weil ich diese schon habe, wie auch 8 kleine Nano’s.

@agume
Die ESP werde ich die Tage mal bestellen werde die V4 nehmen, wenn sie da sind werde ich Deinen sketch mal ausprobieren. Pure Neugier :slight_smile:

@xy projekt
Ich habe da mal was gebastelt… um zwei struct’s senden zu können. Einmal den Converter als Sender und 3 Nano’s bis jetzt als Empfänger mit DS3231 und Matrix. Wäre schön wenn Du mal drüber gucken könntest mir mir Deine Meinung dazu mitteilst.

Ein herzliches Dankeschön an Alle

So, ist schon wieder spät…wie in den letzten 7 Tage, daher horch ich nu mal an der Matratze… :sleeping:
Morgen aber online… bis dahin gut Nächtle.

Converter_V10.8_USB.ino (14 KB)

Matrix-Uhr-Wlan_V10.9.ino (5.97 KB)

Benziner:
@xy projekt
Ich habe da mal was gebastelt… Wäre schön wenn Du mal drüber gucken könntest mir mir Deine Meinung dazu mitteilst.

Aehm… wird länger dauern, baer bei den Empfängern ist mir aufgefallen:

  if (x == 1) anaus = true;
  if (x == 1 && anaus && (millis() - lastmillis > schrittTime))
  {

In der zweiten Bedingung findet sich die Erste wieder. Dazwischen gibt es keinen Zustand, der das inhaltlich verändern könnte.

Anonsten muss ich mich erstmal durchwühlen. Bei mir sieht das etwas kürzer aus.
Zum einen verwende ich die url=https://github.com/adafruit/RTClib die nimmt sehr viel ab, da brauche ich nicht selbst den I2C-Bus bedienen.
Zum Anderen habe ich keinen struct gebaut sondern mich darauf gestürzt die Array-Felder mit einem Bezeichner, einer Anfang- und einer Endemarkierung zu versenden um eindeutig zuordnenbare Inhalte zu bekommen.

Na mal sehen…

my_xy_projekt:

In der zweiten Bedingung findet sich die Erste wieder.

Ohh je, ich schiebe das mal auf die kleinen Augen die ich Abends immer hatte....Vollkommen übersehen.

Wenn es bei Dir länger dauert kein Problem, bin ja nun, wenn auch mit kleinen Unterbrechungen fast 12 Monate an den Projekt. Das mit der RTC lib habe ich beim Empfänger schon eingesetzt, ist wirklich viel einfacher. Beim Converter war es so das ich den Sketch für das Uhr stellen per 2 Taster im Net irgendwo mal gefunden habe.

Und bis jetzt war's bei mir immer so, warum was funktionierendes ändern.... zumal wo ich noch ganz am Anfang mit dem programmieren stehe. Ich weiß nicht mehr wer es sagte....Da hab ich mich ganz schön weit aus dem Fenster gelehnt.
So, gehst mir gerade.... mein Kumpel mit der Bahn versprochen "Dat bekomme ich hin" Wenn ich das gewusst hätte was da auf mich zukommt......Ich glaub ich hätte den Mund gehalten. :slight_smile:

Nun mit fast 55 Jahren was ganz neues erlernen, fällt abends nach der Arbeit echt nicht leicht. C habe ich immer für den dritten Buchstaben im Alphabet gehalten. :wink:

Ich hab soviel Respekt vor Euer können, ehrlich !!!

Benziner:
Nun mit fast

Jungspund :wink:

Wenn Du sowieso schon mal auf die lib gestossen bist, dann wird es evtl. einfacher Dich davon zu überzeugen.

Es wird nicht komplett übers WE - aber es wird.
Ich brauch dafür nur etwas mehr Zeit um das nicht wieder so ausarten zu lassen wie mit dem einlesen der Daten.

Im Übrigen aus #111

nach meiner Erkenntnis, werden die Steuerzeichen dauerhaft ausgeblendet

Nein.

Beide Versionen blenden die Steuerzeichen aus.
Eine Version macht aber was anders und sorgt für Verwirrung bei der Ausgabe.
Und ja, da musst Du genau hinsehen. Es kann auch nen Moment dauern, ehe man drauf kommt....

Na dann... Hausaufgabe :wink:

my_xy_projekt:
Jungspund :wink:

Dann doppelten Respekt, hatte gedacht das Forum hätte ein jüngeres Durchschnittsalter.

my_xy_projekt:
......davon zu überzeugen.

Merke schon , wenn Du was machst dann richtig.

my_xy_projekt:
Na dann... Hausaufgabe :wink:

Na dann, werde ich wohl mal genauer hinsehen. Aber besser wenn ich ausgeschlafen bin :wink:

Nun mit fast 55 Jahren was ganz neues erlernen, fällt abends nach der Arbeit echt nicht leicht. C habe ich immer für den dritten Buchstaben im Alphabet gehalten. :wink:

Nicht C!

Sondern: Arduino ist (zu einem großen Teil) C++
Und das C++ hat noch ein paar Dimensionen mehr, als C.

Also: Lerne bitteschön C++.
Du Jüngling, du...

combie:
... C++ hat noch ein paar Dimensionen mehr, als C.

Ich habe die Lösung....lerne D ( Erhöhe Wert um 1) :wink:
"agmue" gibt mir Hoffnung, er hast es in 6 Jahren zu etwas geschafft.

Benziner:
... zu etwas geschafft.

Ja, immerhin zum fortgeschrittenen Anfänger. Daher habe ich im parallelen Thema von dem ++ auch etwas Gebrauch gemacht ::slight_smile:

Das basiert nicht nur aber auch auf combies Überzeugungskunst und einem Beispiel, das mich inspiriert hat.

aber auch auf combies Überzeugungskunst

Alles klar, ich bin Schuld!
Immer auf den kleinen doofen rum hacken....
:o :o :o :o :o

Ich habe die Lösung....lerne D

Der Gcc kann D erst ab Version 9.xxx, Arduino ist offiziell erst bei 7.3, o.ä.
Und ob der AVR-GCC es überhaupt können wird, ist wohl noch fraglich. ungeprüft
Zumindest ist der Arduino Builder überhaupt noch nicht dafür vorbereitet.
D ist also eher ein Irrweg.
Weiterhin: Nimm C++ und biege mehrfach 90° ab, um die anderen ca 4 bis 5 Dimensionen kennen zu lernen.

Benziner:
Merke schon , wenn Du was machst dann richtig.

Ach das ist relativ. Ich will nur keine Dauer-Baustellen.
Ich hab mal ne Variante des Uhrenstellen auf Deine zwei Tasten adaptiert und den Code mal abseits von dem Thread zum drübersehen gestellt:

Wenn Lust hast, kannst Dir den mal nehmen und auf dem SerMon schauen, was passiert.
Displays und den andern Kram ist dann Spielerei.

Na dann, werde ich wohl mal genauer hinsehen. Aber besser wenn ich ausgeschlafen bin :wink:

Na da schläft jemand lange :wink:

combie:
Alles klar, ich bin Schuld!

Wer denn sonst? Diese Schuld wird tonnenschwer auf Deinen Schultern lasten und sich vermehren, sollte ich auch mal die Vererbung verstehen. Aber am jüngsten Tag wirst Du befreit von dieser Last und mit Deinen Bienenvölkern davonschweben.

combie:
Nimm C++ und biege mehrfach 90° ab, um die anderen ca 4 bis 5 Dimensionen kennen zu lernen.

Ich hingegen würde Wurmlöcher bevorzugen, denn wer viermal um 90° abbiegt kann leicht wieder am Ausgangspunkt anlangen.

“Was bin ich wieder für ein Schelm!” Heinz Erhardt

my_xy_projekt:
Na da schläft jemand lange :wink:

Morgen, wenn das Forum im Tiefschlaf ist, wird er sich verwundert die Augen reiben.

denn wer viermal um 90° abbiegt kann leicht wieder am Ausgangspunkt anlangen.

Was in einem 3 Dim Raum geschehen kann, ist in einem 5 Dim Raum schon eher unwahrscheinlich.
Hat er doch deutlich mehr Möglichkeiten eine Richtung zu wählen.

3Dim:
Bei jeder Abbiegung 2 Möglichkeiten, macht für die Rückkehr auf den alten Weg in 4 Schritt, eine Trefferrate von 1:(2 hoch 4), also 15 Wege um was neues zu lernen, und nur einer ist Stagnation.

5Dim:
Bei jeder Abbiegung 4 Möglichkeiten, macht für die Rückkehr auf den alten Weg in 6 Schritt, eine Trefferrate von 1:(4 hoch 6), also 4095 Wege um was neues zu lernen, und nur einer ist Stagnation.

Frei nach:

Je größer der Dachschaden,
desto besser der Blick auf die Sterne

my_xy_projekt:
Na da schläft jemand lange :wink:

.....es müsste ehr heißen, da braucht einer lange zum tippen. :wink:

my_xy_projekt:
Ich hab mal ne Variante des Uhrenstellen auf Deine zwei Tasten adaptiert…

Ohh, dachte das sollte meine Aufgabe sein. Hab da auch was gemacht…

Converter_V11.1.ino (12.8 KB)

Converter_V11.1.ino (12.8 KB)

Spur1-Matrix-Uhr-Wlan_V12.ino (6.53 KB)

Benziner:
Ohh, dachte das sollte meine Aufgabe sein. Hab da auch was gemacht....

Jaja, mach mal ruhig...

Was passiert, wenn Du hier:

      if (u == 2 && Stellwert > 31) Stellwert = 1; // If date > 31 ==> date = 1
      if (u == 3 && Stellwert > 12) Stellwert = 1; // If month > 12 ==> month = 1

versuchst den 31.2. zu übergeben? - prinzipiell machbar ist das schon. Ich kenn nur nicht die Auswirkung.

my_xy_projekt:
Was passiert, wenn Du hier:

Hab's gerade ausprobiert...die DS3231 schluckt es und gibt es auch munter wieder aus.
Mhmm, vielleicht doch zu früh abgebogen.....oder ich bin der neuen Zeitrechnung schon voraus :wink:

Benziner:
die DS3231 schluckt es und gibt es auch munter wieder aus.
, vielleicht doch zu früh abgebogen

Ne - alles gut!
Ist doch sinnvoll sowas auszuprobieren.
Kann dann Entscheidungshilfe, ob der Kalender selbst gefüllt wird, sein. In dem Fall musst Du die Schaltjahre etc. auch mit berücksichtigen.

Ich habe mich auf die unixtime eingeschossen - das muss nicht richtig sein.
Es erlöst mich aber von einigen Problemen.

HINWEIS: Es gibt einen zweiten Thread, der sich mit der möglichen Verwendung von struct zur Versendung beschäftigt. Ab hier trenne ich das davon wieder ab.

Ich hab vermutlich aus Deinem Code dort in #79 rausgelesen, was Du willst.
Das halte ich für kontraproduktiv.

Aus zwei Gründen:
Struct macht keinen Sinn, wenn Du verschiedene Formate benutzt und die vorher signalisieren musst.
Dann benutzt Du ein struct für alles.

struct Daten1 {
  unsigned int Ar1;
  unsigned int RZ1v;
  unsigned int RZ1n;
  unsigned int Ar2;
  unsigned int RZ2v;
  unsigned int RZ2n;
  unsigned int Ar3;
  unsigned int RZ3v;
  unsigned int RZ3n;
  unsigned int Ar4;
  unsigned int RZ4v;
  unsigned int RZ4n;
  byte Status;
} Spur1;

Eigentlich ist ja der Sinn dahinter ein Format wiederzuverwenden.
Und mit jeder Übertragung schickst Du alle Daten.
Vermeide jede Datenübertragung, wenn sie nicht notwendig ist!

Die Geschichte mit der RTC und dem Überlauf hatten wir.

Ich habe es wirklich zwei Tage versucht, aber wenn das was werden soll, würde ich das gerne komplett überarbeiten. Oder anders gesagt bis auf den "StartBildschirm" bleibt nur wenig übrig.

struct macht, selbst wenn ich es runterkürze auf:

struct Daten {
  unsigned int Ar;
  unsigned int RZv;
  unsigned int RZn;
  char fahrer[25];
}

keinen Sinn, weil Du damit nicht das TimeSync hinbekommst.

Das mit der rtc würde ich gerne auf die time-lib schieben. Das kürzt Dir alle Abfragen, Vergleiche etc. und macht es eindeutig übersichtlicher. Um nicht zu sagen, das Du alles ausser readSerial und teilePuffer, startBild und mindestens die Hälfte von DS3231_display nicht mehr wiederfinden wirst...