"manuelle" Steuerung funktioniert nur sporadisch

Danke für die vielen Antworten.

uwefed:
Das geht so nicht Du kannst nicht 3 Ausgänge der Slave zusammenschalten und einen auf masse schalten und einen anderen auf HIGH.
Entweder Du wechselst das Pin zwischen Ausgang HIGH und Eingang und hast einen Pullupwiderstand geschaltet oder Du nimmst Dioden damit kein Kurzschluß passiert.
Grüße Uwe

Mach ich auch nicht. Natürlich sind alle GND mit einander verbunden aber Pin13 nur vom Slave 4 mit Pin 13 vom Master. Beim Slave Ausgang beim Master Eingang.

HotSystems:
Erkläre uns doch mal etwas genauer, was du mit dem Pin 13 erreichen möchtest.

Du hast doch schon eine Verbindung über I2C zwischen den Arduinos, wozu dann noch Pin13 ?

beim I2C Bus ist es meines Wissens nach so das das senden vom Slave zum Master immer eine Anfrage des Masters an den jeweiligen Slave benötigt. Am Slave 4 läuft ein Counter der ein 4-stelliger Jumbo 7-Segmentdisplay und 5 Ampelsegmente Steuert. Es wird hier eine ausgewählte Zeit , z.B. 120sec., vom Master gestartet und auf Null gezählt. Es besteht aber auch die Möglichkeit das die Zeit, für eine unbestimmte Zeit lang, gestoppt werden muss. Um also eine permanente Abfrage zu vermeiden (mindesten alle hundertstel Sec.) habe ich mich für eine separate Leitung entschieden. Das Event wird immer ausgelöst wenn der Counter Null erreicht hat. Da die Ampel dann auch auf rot schaltet und der Impuls auch messbar ist kann ich mit Sicherheit sagen das am Slave alles funktioniert.

MicroBahner:
Wenn ich seinen Startpost richtig gelesen habe, macht er das ja nur bei einem der Slaves.
Ich denke, so spart er sich das pollen über I2C. Ist ja nicht so unüblich - viele I2C-Bausteine haben dafür einen eigenen Interrupt-Ausgang, wenn sie abgefragt werden wollen.

@Gundelputz: Wenn Du uns nicht den ganzen Sketch zeigst, werden wir zu deinem Problem nichts weiter sagen können.

der ganze Sketch währe vielleicht ein wenig zu umfangreich. hier noch mal die entsprechenden Stellen
Slave:

[///zählt die Zeit runter bis Null
void count_x()
{
  
while(zeit >= 0)//Schleife wird so lang ausgefürt bis zeit 0 beträgt
{
  if(start_count == 1)      //Start
  {
  number = zeit;
  zeit--;
  anzeige();
  delay(100);
 //Serial.println(zeit);  
 ///////////////////////////////
  //Ampel wärend des Countdown
   if(zeit >=300)
     {
       digitalWrite(rot, LOW);
       digitalWrite(gelb, LOW);
       digitalWrite(gruen, HIGH);
 
     }
     if((zeit<300)&&(zeit>0))
     {
      //unterscheide zwischen vorlaufzeit und Hauptzeit
      if(rot_oder_gelb == 0)//0 = Vorlaufzeit
     {
       digitalWrite(rot, LOW);
       digitalWrite(gelb, HIGH);
       digitalWrite(gruen, LOW); 
     }
     else
     {
       digitalWrite(rot, HIGH);
       digitalWrite(gelb, LOW);
       digitalWrite(gruen, LOW);  
     }
    
     }
     if(zeit<=0)
     {
 
       digitalWrite(rot, HIGH);
       digitalWrite(gelb, LOW);
       digitalWrite(gruen, LOW); 
       RESET_TIME();
      
     }

///////////////////////////////  
  }
  else                      //Stop
  {
    zeit=zeit;
    Serial.println(zeit);
    delay(100);
    digitalWrite(rot, HIGH);
    digitalWrite(gelb, LOW);
    digitalWrite(gruen, LOW);
  }

/////////////////////////////////  
}
}


void RESET_TIME()
{
  digitalWrite(ende, HIGH);
  delay(100);
  digitalWrite(ende, LOW);
  delay(100);
}code]

Master:
[code][/void steuerung()
{
  weiter_so = digitalRead(weiter);

  if(weiter_so == HIGH)
  {// bei Signal vom Slave 4 (Anzeigetafel) das runde beendet
    delay(110);
    //sende_ton_1();
    Text_1 = "yes";
    tr_wk = tr_wk + 1;
    switch(tr_wk)
{
  case 1: 
    runde_1();
  break;

  case 2: 
    runde_2();
  break;

  case 3: 
    runde_3();
  break;

  case 4:
    runde_4();
  break;

  default:
    
  break;
}
    
  }
  else
  {
    Text_1 = " NO";
  }
 //ende weiter_so

}

void runde_1()
{
  sende_ton_1();
  Text_3 = "TW=2";
  sende_4 = 6;
  senden_an();
}

void runde_2()
{
  sende_ton_3();
  Text_3 = "TW=3";
  AD_CD();
  sende_4 = 4;
  senden_an();
}

void runde_3()
{
  sende_ton_1();
  Text_3 = "TW=4";
  sende_4 = 6;
  senden_an();
  
}

void runde_4()
{
  Text_3 = "TW=0";
  sende_ton_3();
  tr_wk = 0;
  sende_4 = 2;//Stop Counter
  senden_an();
}

void AD_CD()
{
  switch(abcd)
  {
    case 1:
      sende_4 = 'b';
      senden_an();
      abcd = 2;
    break;
    case 2:
      sende_4 = 'c';
      senden_an();
      abcd = 1;
    break;
  }
}code]