Hi, ich verscuhe jetzt schon seit einigen Tagen ein wahrscheinlich recht einfaches Problem zu lösen. Und zwar will ich mit einem HC12 Funkmodul Werte von einem Arduino zu einem anderen senden um von dort aus zu einem Nextion Display Befehle zu senden. Es funktioniert auch einwandfrei (so scheint es zumindest). Nach ungefähr 5 Minuten verschieben sich jedoch die Werte irgendwie und der Wert von w1 ist nicht mehr der Wert von w1 sondern von w5. Ebenso bei allen anderen Variablen. Hat hier jemand einen Lösungsvorschlag? Anbei der Code für Sender (Code2.4_4 Nano_copy....) und Empfänger (HC12 Empfänger nano2).
SENDER CODE:
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial HC12(10,11);
//SoftwareSerial nextion(11,12);
long unsigned int start;
long unsigned int intervall=400;
int w1=2;
int w2=3;
int w3=4;
int w4=5;
int w5=6;
int w6=7;
int w7=8;
int x1;
int x2;
int x3;
int x4;
int x5;
int x6;
int x7;
void setup() {
Serial.begin(115200);
Serial.println("Let's start!");
HC12.begin(2400);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
int w1;
int w2;
int w3;
int w4;
int w5;
int w6;
int w7;
}
void loop()
{
String requestString = "";
if (HC12.available())
{
requestString = HC12.readString();
Serial.println(requestString);
}
String dataString = "";
createDataString(dataString);
//Serial.println(dataString);
HC12.print(dataString);
Serial.println(x1);
Serial.println(x2);
Serial.println(x3);
Serial.println(x4);
Serial.println(x5);
Serial.println(x6);
Serial.println(x7);
}
void createDataString(String &data)
{
w1=digitalRead(2);
w2=digitalRead(3);
w3=digitalRead(4);
w4=digitalRead(5);
w5=digitalRead(6);
w6=digitalRead(7);
w7=digitalRead(8);
//PUNT A
if(w1==LOW)
{
x1=0;
}
if(w1==HIGH)
{
x1=1;
}
//PUNKT B
if(w2==LOW)
{
x2=0;
}
if(w2==HIGH)
{
x2=1;
}
//MODUS
if(w3==LOW)
{
x3=0;
}
if(w3==HIGH)
{
x3=1;
}
//BREMSE
if(w4==LOW)
{
x4=0;
}
if(w4==HIGH)
{
x4=1;
}
//RICHTUNG 1
if(w5==LOW)
{
x5=0;
}
if(w5==HIGH)
{
x5=1;
}
//RICHTUNG 2
if(w6==LOW)
{
x6=0;
}
if(w6==HIGH)
{
x6=1;
}
//SIGNAL
if(w7==LOW)
{
x7=1;
}
if(w7==HIGH)
{
x7=0;
}
if(millis()-start >= 400)
{
data = "*" + String(x1) + "*" + String(x2) + "*" + String(x3) + "*" + String(x4) + "*" + String(x5) + "*" + String(x6) + "*" + String(x7);
//delay(200);
Serial.println("");
start = millis();
}
}
EMPFÄNGER CODE:
#include <SoftwareSerial.h>
#include <Wire.h>
long unsigned int start;
long unsigned int intervall=400;
SoftwareSerial HC12(10,11);
void setup()
{
//pinMode(requestPin, INPUT);
Serial.begin(115200);
HC12.begin(2400);
Serial.println("Let's start!");
}
void loop()
{
int w1 ;
int w2 ;
int w3 ;
int w4 ;
int w5 ;
int w6 ;
int w7 ;
if (HC12.available())
{
w1 = HC12.parseInt();
w2 = HC12.parseInt();
w3 = HC12.parseInt();
w4 = HC12.parseInt();
w5 = HC12.parseInt();
w6 = HC12.parseInt();
w7 = HC12.parseInt();
/*
Serial.print("Wert 1: ");
Serial.println(w1);
Serial.print("Wert 2: ");
Serial.println(w2);
Serial.print("Wert 3: ");
Serial.println(w3);
Serial.print("Wert 4: ");
Serial.println(w4);
Serial.print("Wert 5: ");
Serial.println(w5);
Serial.print("Wert 6: ");
Serial.println(w6);
Serial.print("Wert 7: ");
Serial.println(w7);
Serial.println("");
*/
}
else
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tDirection.tx= \"NIX\" ");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
String cmd;
cmd += "\"";
//PUNKT A SETZEN
if(w1 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tPA.bco=0");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
if(w1 ==0)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tPA.bco=63488");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
//PUNKT B SETZEN
if(w2 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tPB.bco=0");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
if(w2 ==0)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tPB.bco=63488");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
//MODUS SETZEN
if(w3 ==0)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("pb_Mode.pic=7");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
if(w3 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("pb_Mode.pic=11");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
//BREMSE SETZEN
if(w4 ==0)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("pb_Brake.pic=10");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
if(w4 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("pb_Brake.pic=3");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
//Richtung 1
if(w5&w6 ==0)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tDirection.tx= \"NIX\" ");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
if(w5 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("t3.txt=1");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
//RICHTUNG 2
if(w6 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tDirection.txt= \"2\ ");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
//SIGNAL
if(w7 ==1)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
//SIGNAL HIER
Serial.print("tDirection.txt= \"2\ ");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
if(w7 ==0)
{
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
//KEIN SIGNAL HIER
Serial.print("tDirection.txt= \"2\ ");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
}
/*
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("pb_Mode.pic=\" " + String(w3) + "\"");
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tPA.bco=" + cmd + String(w5) + cmd);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("tPB.bco=" + cmd + String(w6) + cmd);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.print("vb_Standort.val=" + cmd + String(w7) + cmd);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.write(0xFF);
Serial.println("");
*/
delay(100);
}