Hallo,
ich habe einen Uno (Teilnehmer B) mit einem Mega (Teilnehmer A) über ihre seirellen SS's verbunden (beim Mega die SS2). Der Mega soll, wenn er vom Uno ein "ja" empfängt, nur Pin 13 auf HIGH setzen, ein "nein" an den Uno senden und 1 s warten. Wenn er vom Uno ein "nein" empfängt, Pin 13 auf LOW setzen, ein "ja" an den Uno senden und 1 s warten.
Der Uno soll immer umgekehrt sofort mit einem Telegramm antworten. Mehr haben die zwei nicht zu tun.
Das sollte m.E. bei den an den Pin's 13 angeschlossenen LED's eine Zykluszeit von ca. 2s ergeben.
Real zeigen die aber eine von ca. 8s!!!
Versteht das jemand?
Der Sketch vom Mega ist das:
Code:
void loop() {
if (Serial2.available()) // Abfrage, ob ein Signal von Teilnehmer B verfügbar?
{
Blinken = Serial2.readStringUntil('\n'); // der String enthält vor dem gesendeeten Text ein Steuerzeichen
Blinken.replace("\r", "\0"); // ersetzt das störende Steuerzeichen durch ein Nullzeichen, wird ignoriert
// danach enthält Blinken nur den gesendeten Text
} //********************** ENDE if (Serial.available()) ****************************
if (Blinken == "ja") { // Hat Teilnehmer B ein ja gesendet, dann >>>>
digitalWrite(ausgang, HIGH);
Serial2.println("nein"); // A sendet an B ein nein
delay(1000);
} //****************** ENDE if(Blinken == "ja")
if (Blinken == "nein") { // Hat Teilnehmer B ein nein gesendet, dann >>>>
digitalWrite(ausgang, LOW);
Serial2.println("ja"); // A sendet an B ein ja
delay(1000);
} //****************** ENDE if(Blinken == "nein")
} //****************** ENDE LOOP *******************************
Der Sketch vom Uno ist das:
Code:
void loop() {
if (Serial.available()) // Abfrage, ob ein Signal von Teilnehmer A verfügbar?
{
Blinken = Serial.readStringUntil('\n'); // der String enthält vor dem gesendeeten Text ein Steuerzeichen
Blinken.replace("\r", "\0"); // ersetzt das störende Steuerzeichen durch ein Nullzeichen, wird daher ignoriert
// danach enthält Blinken nur den gesendeten Text
} //********************** ENDE if (Serial.available()) ****************************
if (Blinken == "ja") { // Hat Teilnehmer A ein ja gesendet, dann >>>>
digitalWrite(ausgang, HIGH);
Serial.println("ja"); // B sendet an A ein ja
} //****************** ENDE if(Blinken == "ja")
if (Blinken == "nein") { // Hat Teilnehmer A ein nein gesendet, dann >>>>
digitalWrite(ausgang, LOW);
Serial.println("nein"); // B sendet an A ein nein
} //****************** ENDE if(Blinken == "nein")
} // ****************************** ENDE LOOP
vG
fredyxx
Lesezeichen