ESP8266 / Arduino Nano / Serielle Verbindung Problem

Guten Tag zusammen!

Dies ist mein erster Eintrag hier im Forum und bitte verzeiht mir jegliche Fehler oder mögliche Verstöße. Ich bin noch ziemlich neu im Programmier Bereich, da ich mich vorher nur mit der Hardware beschäftigt habe.

ich habe folgendes Problem und zwar habe ich einen ESP8266 (8PIN) und einen Arudino Nano über RX /TX verbunden. Hardware technisch läuft alles ohne Probleme. Massen sind verbunden. Zum Programmieren hebe ich die Verbindung der RX /TX auf.


ESP CODE: /pastebin zur besseren Übersicht: https://pastebin.com/KEcL5Bcd

#include 
#include 

const char* ssid = "XXXXXX";
const char* password = "XXXXXXX";


WiFiUDP Udp;
unsigned int localUdpPort = 4210;  // lokaler Port auf den der ESP Reagiert
char incomingPacket[255];  // Zwischenspeicher für eingehende Packete
char atmega_bestaetigung[] = "X";  // die bestaetigung, die an den sender zurueck geht
char atmega_uebertragung; // Befehle zur uebertragung an den Atmega bzw zur weiterverarbeitung
char atmega_sendung; // Informationen vom Atmega an den Sender

void setup()
{
 Serial.begin(115200);
 Serial.println();

 Serial.printf("Verbinde zum Netzwerk %s ", ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED)
 {
   delay(500);
   Serial.print(".");
 }
 Serial.println(" Verbunden");

 Udp.begin(localUdpPort);
 Serial.printf("UDP Adresse: IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}


void loop()
{
 int packetSize = Udp.parsePacket();
 if (packetSize)
 {
   // receive incoming UDP packets
  // Serial.printf("Eingehend %d bytes von %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
   int len = Udp.read(incomingPacket, 255);
   if (len > 0)
   {
     incomingPacket[len] = 0;
   }
   Serial.printf("%s\n", incomingPacket);

   // Antwort an die Ip und Port, die ein Paket gesendet hat
   Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
   Udp.write(atmega_bestaetigung);
   Udp.endPacket();
 }
}

Arudino CODE: / Pastebin zur besseren Übersicht: https://pastebin.com/f2FLW8yU

String val;
String vergleich = "6";
String test;


void setup()
{
Serial.begin(115200);
}

void loop()
{

if (Serial.available())
 {
 val = Serial.readString();
 test = val;
 Serial.print(val);
 delay(200);
 }

 if (test

Der Fehler ist dabei im Arudino Code, ich schicke ein UDP Paket (Wort oder Zahl) auf den ESP, der mir das Problemlos auf den Arduino Seriell weiterschickt. Der Code vom ESP ist von einer Vorlage und dementsprechend zu Test Zwecken etwas unübersichtlich. Das Problem ist dabei, dass der Arudino das Wort oder die Zahl in eine Variable steckt und danach in einer IF Anweisung nicht mehr vergleichen kann. Wenn ich die Vergleichsoperatoren wie ">, <, >=, <=" verwende, funktioniert es einwandfrei, außer das er beim vergleich immer nur die erste zahl/ Buchstaben nimmt aber das ist nichts was sich nicht lösen lässt. Dabei habe ich mir die Variablen, die er vergleicht, an verschiedenen Stellen ausgeben lassen und das Ergebnis der zwei Variablen ist immer gleich, jedoch springt die IF Anweisung nicht auf True bei einer Vergleichsoperation mit " == "

Ich will im Prinzip Wörter/Befehle über UDP versenden und die entsprechenden Arudinos sollen sich die passenden Befehle raussuchen und dann ggf. ausführen. Dieser Code war nur ein Test und nicht das Finale Produkt, dienen soll es 10 LED Spots, die Seriell an einen Arduino/ AtMega angeschlossen werden und somit von überall gesteuert werden können.

Da ich bald fertig bin mit den Finalen Platinen der LED Spots (Einzeln ansteuerbar/ Temperatur Überwachung / RGB sowie Warm und Kalt Weiß und und und.. )muss nun das Problem gelöst werden, damit ich weiter machen kann. Für andere Vorschläge oder eine Lösung mit der gleichen Hardware, wäre ich sehr dankbar. Wenn dies stehen sollte, mache ich gerne eine Ausführliche Beschreibung meines Smart Home Projekts, die Voraussetzung war es für mich, so wenig wie möglich Fertig Komponenten zu benutzen. Sodass bald eine eigene Platine mit einem Atmega und ESP für mein SmartHome Projekt folgen wird.

Danke schon mal für mögliche Lösungsvorschläge!

Strings und Zahlenwerte vergleichen sind zwei ganz verschiedene Sachen.

Schade eigentlich, dass Strings vergleichen überhaupt geht.

Wenn du Zahlen vergleichen willst, mach Zahlen aus den übertragenen Texten.

if  (val.toInt() == 6 )

Eigentlich sind Strings Mist, weil viel zu kompliziert. Das verstecken die Strings vor Anfängern und sind deshalb noch viel mistiger.

Woha ich raste aus!! Das geht, das habe ich übersehen das richtig zu stellen, der Ürspüngliche Text hieß

if (val == "6")

Aber ich würde es trotzdem gerne Strings vergleichen.

Ich hatte auch die Variablen "vergleich" und "val" als Strings deklariert und denen die gleichen Wörter gegeben und es hat nicht Funktioniert.

aber wenn ich die 6 in "6" änder, müsste es doch auch Funktionieren? oder wird dies dann als Char deklariert?

Obwohl ich deine Lösung schon mal ähnlich ausprobiert habe, hat es trotzdem funktioniert danke!!

String val;
String vergleich = "Hallo";
String test;


void setup()
{
Serial.begin(115200);
}

void loop()
{
 
if (Serial.available())
 {
 val = Serial.readString();
 test = val;
 Serial.println("Erste "+val);
 delay(200);
 
 if  (val == vergleich)
 {
   Serial.println("Es funktioniert");
 }
 Serial.println(val);
 Serial.println(vergleich);
 }
}

Wenn ich nun über UDP “Hallo” senden würde, funktioniert es nicht. Die Augen sei der If Anweisung mit dem Vergleich gewidmet.