Zwei HC-05 Bluetooth Module schneller kommunizieren lassen

Liebes Forum,

Ich habe folgendes Problem:
Ich habe zwei Arduinos mit je einem HC-05 Bluetooth Modul. Beim Master sollen aus einem Beschleunigungssensor Werte ausgelesen werden und in Befehle/Wörter umgewandelt werden, welche über das HC-05 Bluetooth Modul an das andere gesendet wird.
Diese Wörter sollen dann im Seriellen Monitor ausgegeben werden.

-Dies klappt auch alles, jedoch relativ langsam, was kann ich tun, um die Verzögerung auf ein Minimum zu verkleinern?

Code Master:

int xPin = A3;
int yPin = A2;
int zPin = A1;
  int xSpielraum;
  int ySpielraum;
  int zSpielraum;

void setup() {
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  pinMode(zPin, INPUT);
  Serial.begin(115200);
  xSpielraum = analogRead(xPin);
  ySpielraum = analogRead(yPin);
  zSpielraum = analogRead(zPin);
}


void loop() {
  int xWert = analogRead(xPin);
  int yWert = analogRead(yPin);
  int zWert = analogRead(zPin);

  /*
  Serial.print("X:");
  Serial.print(xWert);
  Serial.print("  Y:");
  Serial.print (yWert);
  Serial.print("  Z:");
  Serial.print(zWert);
  Serial.print("\t");
  */
  
            if(xSpielraum - 15 > xWert&&xSpielraum -21<xWert){
    Serial.println("Voraus1");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 27<xWert){
    Serial.println("Voraus2");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 33<xWert){
    Serial.println("Voraus3");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 39<xWert){
    Serial.println("Voraus4");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 45<xWert){
    Serial.println("Voraus5");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 51<xWert){
    Serial.println("Voraus6");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 57<xWert){
    Serial.println("Voraus7");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 63<xWert){
    Serial.println("Voraus8");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 69<xWert){
    Serial.println("Voraus9");
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 75<xWert){
    Serial.println("Voraus10");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 21>xWert){
    Serial.println("Zurück1");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 27>xWert){
    Serial.println("Zurück2");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 33>xWert){
    Serial.println("Zurück3");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 39>xWert){
    Serial.println("Zurück4");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 45>xWert){
    Serial.println("Zurück5");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 51>xWert){
    Serial.println("Zurück6");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 57>xWert){
    Serial.println("Zurück7");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 63>xWert){
    Serial.println("Zurück8");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 69>xWert){
    Serial.println("Zurück9");
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 75>xWert){
    Serial.println("Zurück10");
  }
  
    else if(ySpielraum - 15 < yWert&&ySpielraum - 21>yWert){
    Serial.println ("Links1");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 27<yWert){
    Serial.println ("Links2");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 33<yWert){
    Serial.println ("Links3");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 39<yWert){
    Serial.println ("Links4");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 45<yWert){
    Serial.println ("Links5");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 51<yWert){
    Serial.println ("Links6");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 57<yWert){
    Serial.println ("Links7");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 63<yWert){
    Serial.println ("Links8");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 69<yWert){
    Serial.println ("Links9");
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 75<yWert){
    Serial.println ("Links10");
  }
  
  else if(ySpielraum + 15 < yWert&&ySpielraum + 21>yWert){
    Serial.println ("Rechts1");
  }
  else if(ySpielraum + 15 < yWert&&ySpielraum + 27>yWert){
    Serial.println ("Rechts2");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 33>yWert){
    Serial.println ("Rechts3");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 39>yWert){
    Serial.println ("Rechts4");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 45>yWert){
    Serial.println ("Rechts5");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 51>yWert){
    Serial.println ("Rechts6");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 57>yWert){
    Serial.println ("Rechts7");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 63>yWert){
    Serial.println ("Rechts8");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 69>yWert){
    Serial.println ("Rechts9");
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 75>yWert){
    Serial.println ("Rechts10");
  }
  
  else{
    Serial.println("nichts");
  }
  
  delay(100);
}

Code Slave:

String state;

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

void loop() {
  if(Serial1.available()){
    state = Serial1.readString();
    Serial.println(state);
  } 
}

serial.readstring() hat einen Timeout der standardmäßig auf einer Sekunde steht. Den TimeOut kann man selbst setzen.

am schnellsten geht es wenn man eine Empfangslogik mit
serial.read() benutzt und ein Endekennzeichen benutzt. Dann hat man überhaupt keine timeout Verzögerung.

Hier wird erklärt wie man das macht

vgs

1 Like

Dein "Sender" ist schon tricky.... Das lässt sich eindeutig besser lösen.

Dein Empfänger mal in Neu:

char myBuffer[30];
void setup()
{
  Serial1.begin(115200);
  Serial.begin(115200);
}

void loop()
{
  getExtern();
}


void getExtern()
{
  char myChar = '\0';
  static byte myPos = 0;
  if (myPos == 0) memset(myBuffer, '\0', sizeof(myBuffer));
  if (Serial1.available())
  {
    myBuffer[myPos] = Serial1.read();
    myPos++;
  }
  if (myChar == '\n')
  {
    Serial.println(myBuffer);
    myPos = 0;
  }
}

zum probieren - ungetestet und ohne irgendwas....

@my_xy_projekt im Seriellen Monitor wird gar nichts ausgegeben.

Dann mal mit ein paar zusätzlichen Ausgaben:
(Nochmal geändert - die Endekennung war falsch)

char myBuffer[30];
void setup()
{
  Serial1.begin(115200);
  Serial.begin(115200);
  Serial.println(F("Start..."));
}

void loop()
{
  getExtern();
}


void getExtern()
{
  static byte myPos = 0;
  if (myPos == 0) memset(myBuffer, '\0', sizeof(myBuffer));
  if (Serial1.available())
  {
    Serial.print(F("Zeichen erkannt: "));
    myBuffer[myPos] = Serial1.read();
    Serial.println(myBuffer[myPos]);
    myPos++;
  }
  if (myBuffer[myPos-1] == '\n')
  {
    Serial.println(F("Gesamte Zeichenkette: "));
    Serial.println(myBuffer);
    myPos = 0;
  }
}
1 Like

@my_xy_projekt die Wörter erscheinen im Seriellen Monitor, jedoch nicht gerade flüssig, es werden ca. 10 Wörter bzw. Zeilen geschrieben, dann eine Pause und dann erneut.
Ist das normal?

Kann ich nicht sagen.
Ich weiss nicht, was "normal" sein kann...

Eigentlioch ist "Pause" nicht vorgesehen.

Ich hab mal Deinen Sender runtergekürzt....

int xPin = A3;
int yPin = A2;
int zPin = A1;
int xSpielraum;
int ySpielraum;
int zSpielraum;

void setup()
{
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  pinMode(zPin, INPUT);
  Serial.begin(115200);
  xSpielraum = analogRead(xPin);
  ySpielraum = analogRead(yPin);
  zSpielraum = analogRead(zPin);
}


void loop()
{
  int xWert = analogRead(xPin);
  int yWert = analogRead(yPin);
  int zWert = analogRead(zPin);
  /*
    Serial.print("X:");
    Serial.print(xWert);
    Serial.print("  Y:");
    Serial.print (yWert);
    Serial.print("  Z:");
    Serial.print(zWert);
    Serial.print("\t");
  */
  if (xSpielraum - 15 > xWert)
  {
    if (xSpielraum - 21 < xWert)
    {
      Serial.println("Voraus1");
    }
    else if (xSpielraum - 27 < xWert)
    {
      Serial.println("Voraus2");
    }
    else if (xSpielraum - 33 < xWert)
    {
      Serial.println("Voraus3");
    }
    else if (xSpielraum - 39 < xWert)
    {
      Serial.println("Voraus4");
    }
    else if (xSpielraum - 45 < xWert)
    {
      Serial.println("Voraus5");
    }
    else if (xSpielraum - 51 < xWert)
    {
      Serial.println("Voraus6");
    }
    else if (xSpielraum - 57 < xWert)
    {
      Serial.println("Voraus7");
    }
    else if (xSpielraum - 63 < xWert)
    {
      Serial.println("Voraus8");
    }
    else if (xSpielraum - 69 < xWert)
    {
      Serial.println("Voraus9");
    }
    else if (xSpielraum - 75 < xWert)
    {
      Serial.println("Voraus10");
    }
  }
  else if (xSpielraum + 15 < xWert)
  {
    if (xSpielraum + 21 > xWert)
    {
      Serial.println("Zurück1");
    }
    else if (xSpielraum + 27 > xWert)
    {
      Serial.println("Zurück2");
    }
    else if (xSpielraum + 33 > xWert)
    {
      Serial.println("Zurück3");
    }
    else if (xSpielraum + 39 > xWert)
    {
      Serial.println("Zurück4");
    }
    else if (xSpielraum + 45 > xWert)
    {
      Serial.println("Zurück5");
    }
    else if (xSpielraum + 51 > xWert)
    {
      Serial.println("Zurück6");
    }
    else if (xSpielraum + 57 > xWert)
    {
      Serial.println("Zurück7");
    }
    else if (xSpielraum + 63 > xWert)
    {
      Serial.println("Zurück8");
    }
    else if (xSpielraum + 69 > xWert)
    {
      Serial.println("Zurück9");
    }
    else if (xSpielraum + 75 > xWert)
    {
      Serial.println("Zurück10");
    }
  }
  else if (ySpielraum - 15 < yWert)
  {
    if ( ySpielraum - 21 > yWert)
    {
      Serial.println ("Links1");
    }
    else if (ySpielraum - 27 < yWert)
    {
      Serial.println ("Links2");
    }
    else if (ySpielraum - 33 < yWert)
    {
      Serial.println ("Links3");
    }
    else if (ySpielraum - 39 < yWert)
    {
      Serial.println ("Links4");
    }
    else if (ySpielraum - 45 < yWert)
    {
      Serial.println ("Links5");
    }
    else if (ySpielraum - 51 < yWert)
    {
      Serial.println ("Links6");
    }
    else if (ySpielraum - 57 < yWert)
    {
      Serial.println ("Links7");
    }
    else if (ySpielraum - 63 < yWert)
    {
      Serial.println ("Links8");
    }
    else if (ySpielraum - 69 < yWert)
    {
      Serial.println ("Links9");
    }
    else if (ySpielraum - 75 < yWert)
    {
      Serial.println ("Links10");
    }
  }
  else if (ySpielraum + 15 < yWert)
  {
    if (ySpielraum + 21 > yWert)
    {
      Serial.println ("Rechts1");
    }
    else if (ySpielraum + 27 > yWert)
    {
      Serial.println ("Rechts2");
    }
    else if (ySpielraum + 33 > yWert)
    {
      Serial.println ("Rechts3");
    }
    else if (ySpielraum + 39 > yWert)
    {
      Serial.println ("Rechts4");
    }
    else if (ySpielraum + 45 > yWert)
    {
      Serial.println ("Rechts5");
    }
    else if (ySpielraum + 51 > yWert)
    {
      Serial.println ("Rechts6");
    }
    else if (ySpielraum + 57 > yWert)
    {
      Serial.println ("Rechts7");
    }
    else if (ySpielraum + 63 > yWert)
    {
      Serial.println ("Rechts8");
    }
    else if (ySpielraum + 69 > yWert)
    {
      Serial.println ("Rechts9");
    }
    else if (ySpielraum + 75 > yWert)
    {
      Serial.println ("Rechts10");
    }
  }
  else
  {
    Serial.println("nichts");
  }
  delay(100);
}

Ich schreib mal den Empfänger nochmal um - in der Zeit kannst ja mal sehen, obder Sender noch immer das macht, was du willst...
ungetestet und ohne Anspruch auf irgendwas.

Ich hab den Empfänger mal wieder auf das zurück geschrieben, wie ich es sonst mache.
void getExtern tauschen:

void getExtern()
{
  char myChar = '\0';
  static byte myPos = 0;
  if (myPos == 0) memset(myBuffer, '\0', sizeof(myBuffer));
  if (Serial1.available())
  {
    Serial.print(F("Zeichen erkannt: "));
    myChar = Serial1.read();
    Serial.println(myChar);
    myBuffer[myPos] = myChar;
    myPos++;
  }
  if (myChar == '\n')
  {
    Serial.println(F("Gesamte Zeichenkette: "));
    Serial.println(myBuffer);
    myPos = 0;
  }
}

@my_xy_projekt es hat sich leider nichts geändert.

kannst Du mir mal die serielle Ausgabe geben, damit ich sehe, was da passiert?
Ich bin vollkommen blind - Hardware erst ab heute Abend....

@my_xy_projekt die Serielle Ausgabe sieht an sich nicht falsch aus, sie ist nur nicht flüssig also wie hier:

Wenn ich es mit dem Sensor ein gutes Timing habe, kommt die Ausgabe am Seriellen Monitor direkt - so als würde er all 1-2 Sekunden prüfen was ankommt.

Das ganze hat mittlerweile geklappt.
Ich habe beim Sender die Wörter (Voraus1) gekürzt z.B. v1 und beim Empfänger habe ich Serial1.readStringUntil('\n') verwendet.

Schade.
Nur Symptome umgebogen.
Was passiert, wenn Dein \n nicht kommt?

Na denne.

Liebes Forum,
Leider wurde mein Problem doch nciht behoben, denn wies schon gesagt:
ich würde gerne, ein Arduino Nano mit einem Arduino Mega kommunizieren lassen, um mit Handneigungen (Seitens des Nanos) einen Roboter bzw. Motoren (den Mega) steuern. Dies klappt auch alles mit zwei HC-05 Modulen, jedoch noch sehr langsam.

Gerne würde ich diese Verzögerung die Momentan besteht auf ein Minimum verringern. Würde ich die zwei Boards nämlich direkt seriell mit Kabel verbinden, entsteht keine Verzögerung und nehme auch wenn ich nur die Zahlen verlangen würde entsteht immer noch die Verzögerung (somit liegt es nicht an den Motoren).

Was kann ich tun?

(---> Code Mega bei Antworten)

Code Nano (Sender der Zahlen) :

void loop (){
  werteSenden();
}

void werteSenden() {
  int xWert = analogRead(xPin);
  int yWert = analogRead(yPin);
  int zWert = analogRead(zPin);

  if(xSpielraum - 15 > xWert&&xSpielraum -21<xWert){
  Serial.write(11);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 27<xWert){
    Serial.write(12);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 33<xWert){
    Serial.write(13);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 39<xWert){
    Serial.write(14);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 45<xWert){
    Serial.write(15);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 51<xWert){
    Serial.write(16);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 57<xWert){
    Serial.write(17);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 63<xWert){
    Serial.write(18);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 69<xWert){
    Serial.write(19);
  }
      else if(xSpielraum - 15 > xWert&&xSpielraum - 75<xWert){
    Serial.write(20);
  }
  else if(xSpielraum + 15 < xWert&&xSpielraum + 21>xWert){
    Serial.write(21);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 27>xWert){
    Serial.write(22);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 33>xWert){
    Serial.write(23);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 39>xWert){
    Serial.write(24);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 45>xWert){
    Serial.write(25);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 51>xWert){
    Serial.write(26);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 57>xWert){
    Serial.write(27);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 63>xWert){
    Serial.write(28);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 69>xWert){
    Serial.write(29);
  }
      else if(xSpielraum + 15 < xWert&&xSpielraum + 75>xWert){
    Serial.write(30);
  }
    else if(ySpielraum - 15 < yWert&&ySpielraum - 21>yWert){
    Serial.write (31);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 27<yWert){
    Serial.write (32);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 33<yWert){
    Serial.write (33);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 39<yWert){
    Serial.write (34);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 45<yWert){
    Serial.write (35);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 51<yWert){
    Serial.write (36);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 57<yWert){
    Serial.write (37);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 63<yWert){
    Serial.write (38);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 69<yWert){
    Serial.write (39);
  }
    else if(ySpielraum - 15 > yWert&&ySpielraum - 75<yWert){
    Serial.write (40);
  }
  
  else if(ySpielraum + 15 < yWert&&ySpielraum + 21>yWert){
    Serial.write (41);
  }
  else if(ySpielraum + 15 < yWert&&ySpielraum + 27>yWert){
    Serial.write (42);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 33>yWert){
    Serial.write (43);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 39>yWert){
    Serial.write (44);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 45>yWert){
    Serial.write(45);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 51>yWert){
    Serial.write (46);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 57>yWert){
    Serial.write (47);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 63>yWert){
    Serial.write (48);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 69>yWert){
    Serial.write (49);
  }
    else if(ySpielraum + 15 < yWert&&ySpielraum + 75>yWert){
    Serial.write (50);
  }
  
  else{
    Serial.write(0);
  }
 delay(10);
}```

Neuer Code Mega (Empfänger)

void setup() {
  Serial1.begin(115200);
  Serial.begin(115200); 
}
void loop (){
   motorAusleserUndAusgeber();
} 

void motorAusleserUndAusgeber() {
  if(Serial1.available()){
    state = Serial1.read();
  
// Voraus auslesen und ausgeben      ---------------------------------------------
    if(state > 10&&state<21){
    if(state == 11){
      Serial.println("11");
  }
   else if  (state == 12) {      
      Serial.println("12");
    }
   else if (state == 13) {     
      Serial.println("13");
    }
   else if (state == 14) {     
      Serial.println("14");
    }
   else if (state == 15) {    
      Serial.println("15");
    }
   else if (state == 16) {      
      Serial.println("16");
    }
    else if (state == 17) {      
      Serial.println("17");
    }
   else if (state == 18) {      
      Serial.println("18");
    }
   else if (state == 19) {     
      Serial.println("19");
    }
   else if (state == 20) {  
      Serial.println("20");
    }}
// Zurück auslesen und ausgeben      ---------------------------------------------
   if (state>20&&state<31){
    if (state == 21){
      Serial.println("21");    
  }
   else if (state == 22) {   
      Serial.println("22");
    }
   else if (state == 23) {      
      Serial.println("23");
    }
    else if (state == 24) {      
      Serial.println("24");
    }
   else if (state == 25) {      
      Serial.println("25");
    }
   else if (state == 26) {     
      Serial.println("26");
    }
   else if (state == 27) {   
      Serial.println("27");
    }
   else if (state == 28) {      
      Serial.println("28");
    }
   else if (state == 29) {      

      Serial.println("29");
    }
   else if (state == 30) {       

      Serial.println("30");
    }}
// Links auslesen und ausgeben      ---------------------------------------------
   if (state>30&&state<41){
     if (state == 31){      

      Serial.println("31");
  }
   else if (state == 32) {      

      Serial.println("32");
    }
   else if (state == 33) {      

      Serial.println("33");
    }
    else if (state == 34) {      

      Serial.println("34");
    }
    else if (state == 35) {      
      Serial.println("35");
    }
   else if (state == 36) {      

      Serial.println("36");
    }
   else if (state == 37) {      
      Serial.println("37");
    }
   else if (state == 38) {      
      Serial.println("38");
    }
   else if (state == 39) {      

      Serial.println("39");
    }
   else if (state == 40) {      
      Serial.println("40");
    }}
// Links auslesen und ausgeben      ---------------------------------------------
   if (state>40&&state<51){   
    if (state == 41){      
      Serial.println("41");
  }
   else if (state == 42) {      

      Serial.println("42");
    }
   else if (state == 43) {      

      Serial.println("43");
    }
   else if (state == 44) {      

      Serial.println("44");
    }
   else if (state == 45) {      

      Serial.println("45");
    }
   else if (state == 46) {      

      Serial.println("46");
    }
   else if (state == 47) {      

      Serial.println("47");
    }
   else if (state == 48) {      

      Serial.println("48");
    }
    else if (state == 49) {      

      Serial.println("49");
    }
    else if (state == 50) {      

      Serial.println("50");
    }}
// Alles aus -------------------------------------------------------------------------
else if (state == 0){

  Serial.println("0");
}}
}

Erstmal den Empfänger auf das Minimum runterkürzen:

void setup()
{
  Serial1.begin(115200);
  Serial.begin(115200);
}
void loop ()
{
  motorAusleserUndAusgeber();
}

void motorAusleserUndAusgeber()
{
  if (Serial1.available() > 0)
  {
    byte state = Serial1.read();
    Serial.print(F("State: "));
    Serial.println(state);

Und warum floodest Du den Sender mit und dann auch noch das delay....

[quote="dominic, post:14, topic:949028"]
```
  else{
    Serial.write(0);
  }
 delay(10);
```
[/quote]

  }
}

Ich würde die zu sendenden Werte dauernd errechnen und nach dem senden zwischenspeichern und nur nach einer Änderung wieder senden.

mir ist schon bewusst, dass da ein delay ist, aber der ist nur um nichts zu überfordern und die Verzögerung vom empfangen der Daten beträgt weitaus mehr als 10 millisekunden

Wenn ein System mit dem Gesamtprogramm nicht funktioniert und man nicht weiß wo der Fehler herkommt, dann geht man zurück zu einem einfacheren Testprogramm.

In dem Fall schalge ich vor du schreibst für die Empfängerseite ein einfaches Programm, das einfach nur bytes via bluetooth empfängt und die empfangenen bytes auf den seriellen Monitor ausgibt.

Dazu im seriellen Monitor das Kästchen für Zeitstempel aktivieren.
Dann als Code-Section mal so 20 bis 100 Ausgabezeilen hier posten.

vgs

@my_xy_projekt immernoch die gleiche Verzögerung.

na dann mal noch viel Spaß beim source-code-ping-pong