In einer Schleife trotz Blinken unterbrechen

Hallo

ich bin relativ neu im Thema Arduino.

Ich bin gerade dabei ein Signal für Schulungszwecke zu programmieren.

Folgendes Problem habe ich:

Alles funktioniert einbandfrei bis auf das "Zs1".

Das Zs1 soll so funktionieren das eine Rote Lampe (Hp0) dauerhaft leuchtet und währenddessen die Led vom (Ra121) Blinkt.

Das ganze steuere ich Momentan so das ich über eine IR Fernbedienung den Arduino ansteuere und je nach Tasten Druck entsprechend die Led's schalten.

Ich bekomme es nicht hin das "Zs1" zu unterbrechen egal wie ich das schreibe es klappt nicht, ich habe es schon in etlichen Foren versucht zu finden bin aber immer nicht schlau draus geworden.

Ich habe bisher es versucht mit: while(dazu die IR werte auslesen), if, void Blinken (und dann durch aufrufen im Loop starten)

gestartet bekommen hab ich es immer nur nie beendet.

Hier mein bisheriger Code

#include <IRremote.h>

int Recv_PIN =11;
int Hp0 = 2;
int Hp0r = 3;
int Hp1 = 4;
int Hp2 = 5;
int Ra121 = 6;
int Ra122 = 7;
int Zs7 = 8;
int IR_Empf = 11;
//int Blink = 0;

IRrecv irrecv (IR_Empf);
decode_results results;


void setup() 
{
  // put your setup code here, to run once:
irrecv.enableIRIn ();
Serial.begin (9600);
pinMode (Hp0 , OUTPUT);
digitalWrite (Hp0, HIGH);
pinMode (Hp0r, OUTPUT);
digitalWrite (Hp0r, HIGH);
pinMode (Hp1, OUTPUT);
digitalWrite (Hp1, LOW);
pinMode (Hp2, OUTPUT);
digitalWrite (Hp2, LOW);
pinMode (Ra121, OUTPUT);
digitalWrite (Ra121, LOW);
pinMode (Ra122, OUTPUT);
digitalWrite (Ra122, LOW);
pinMode (Zs7, OUTPUT);
digitalWrite (Zs7, LOW);
pinMode (13, OUTPUT);
digitalWrite (13, LOW);


}

void loop() {
  // put your main code here, to run repeatedly:



if (irrecv.decode(&results)) {

  Serial.println (results.value, DEC);

  if (results.value == 16750695) //0
  {
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, HIGH);
    digitalWrite (Hp1, LOW);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, LOW);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);
    
    
  }

  if (results.value == 16753245) //1
  {
    digitalWrite (Hp0, LOW);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, HIGH);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, LOW);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);
    
  }

  if (results.value == 16736925) // 2
  {
    digitalWrite (Hp0, LOW);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, HIGH);
    digitalWrite (Hp2, HIGH);
    digitalWrite (Ra121, LOW);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);
  }

  if (results.value == 16769565) //3
  {
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, LOW);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, HIGH);
    digitalWrite (Ra122, HIGH);
    digitalWrite (Zs7, LOW);    
  }

  if (results.value == 16720605) //4
  {
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, LOW);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, HIGH);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);    
  }

  if (results.value == 16712445) //5
  {
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, LOW);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, HIGH);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);   
    //Blink = 5;
    Blinken();
  }

  if (results.value == 16756815) //#
  {
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, HIGH);
    digitalWrite (Hp1, HIGH);
    digitalWrite (Hp2, HIGH);
    digitalWrite (Ra121, HIGH);
    digitalWrite (Ra122, HIGH);
    digitalWrite (Zs7, HIGH);    
  }

  if (results.value == 16738455) //*
  {
    digitalWrite (Hp0, LOW);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, LOW);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, LOW);
    digitalWrite (Ra122, HIGH);
    digitalWrite (Zs7, LOW);    
  }

  if (results.value == 16748655) //9
  {
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, HIGH);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, HIGH);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);    
  }

  }

  irrecv.resume();
}

void Blinken (void){
if (irrecv.decode(&results)) {


{
 if (results.value == 16712445) //5
 {
  Start:
  digitalWrite (Ra121, HIGH);
  delay (1000);
  digitalWrite (Ra121, LOW);
  delay (1000);
  goto Start;
 }

 if (results.value == 16750695) //0
{
 digitalWrite (Hp1, HIGH);
} 
}
}
}



Vielleicht hat ja einer eine Idee

Hallo
schiebe bitte noch ein Abkürzungsverzeichnis nach :slight_smile:

Ich hoffe du meinst meine Int Zeilen

Recv_Pin = Die IR Empfangs LED
Hp0 = Rote LED
Hp0r = Rote LED
Hp1 = Grüne LED
Hp2= Gelbe LED
Ra 121= Weiße LED
Ra122= Weiße LED
Zs7 = 3 Gelbe LED
IR_Empf = ist anscheinend Doppelt :grimacing: auch die IR EmpfangsLED

und due ganzen If Werte sind nach Realistischen Signalen nachempfunden

Die entsprechenden Dezimalzahlen sind entsprechend mit der Tasten Zahl dahinter beschriftet

Was im Ablauf stört ist:

Start:
  digitalWrite (Ra121, HIGH);
  delay (1000);
  digitalWrite (Ra121, LOW);
  delay (1000);
  goto Start;

für das Blinken brauchst einen Zeitgeber basierend auf dem BWOD Beispiel aus dem IDE.
Zudem ist es besser den Empfang von IR-Zeichen einmal auszulesen und dann auszuwerten.
Achja aus:

{
    digitalWrite (Hp0, HIGH);
    digitalWrite (Hp0r, LOW);
    digitalWrite (Hp1, HIGH);
    digitalWrite (Hp2, LOW);
    digitalWrite (Ra121, HIGH);
    digitalWrite (Ra122, LOW);
    digitalWrite (Zs7, LOW);    
  }

kann man sehr schön eine Funktion basteln:

void setLed(bool hp0, bool hp0r, bool hp1, bool hp2, bool ra121, bool ra122, bool zs7) {
    digitalWrite (Hp0, hp0);
    digitalWrite (Hp0r, hp0r);
    digitalWrite (Hp1, hp1);
    digitalWrite (Hp2,hp2);
    digitalWrite (Ra121,ra121);
    digitalWrite (Ra122, ra122);
    digitalWrite (Zs7, zs7);    
}

Einfach mal ausprobieren.
Die Ansammlung von IF´s läßt sich sinnvoll durch ein SWITCH/CASE ersetzen.

Hallo
hier kommt ein Sketch mit der setLed() Funktion, ohne Blinken, zum Testen:

#include <IRremote.h>

int Recv_PIN = 11;
int Hp0 = 2;
int Hp0r = 3;
int Hp1 = 4;
int Hp2 = 5;
int Ra121 = 6;
int Ra122 = 7;
int Zs7 = 8;
int IR_Empf = 11;
//int Blink = 0;

IRrecv irrecv (IR_Empf);
decode_results results;

/// functions ///
void setLed(bool hp0, bool hp0r, bool hp1, bool hp2, bool ra121, bool ra122, bool zs7) {
  digitalWrite (Hp0, hp0);
  digitalWrite (Hp0r, hp0r);
  digitalWrite (Hp1, hp1);
  digitalWrite (Hp2, hp2);
  digitalWrite (Ra121, ra121);
  digitalWrite (Ra122, ra122);
  digitalWrite (Zs7, zs7);
}

////////
void setup()
{
  // put your setup code here, to run once:
  irrecv.enableIRIn ();
  Serial.begin (9600);
  pinMode (Hp0 , OUTPUT);
  digitalWrite (Hp0, HIGH);
  pinMode (Hp0r, OUTPUT);
  digitalWrite (Hp0r, HIGH);
  pinMode (Hp1, OUTPUT);
  digitalWrite (Hp1, LOW);
  pinMode (Hp2, OUTPUT);
  digitalWrite (Hp2, LOW);
  pinMode (Ra121, OUTPUT);
  digitalWrite (Ra121, LOW);
  pinMode (Ra122, OUTPUT);
  digitalWrite (Ra122, LOW);
  pinMode (Zs7, OUTPUT);
  digitalWrite (Zs7, LOW);
  pinMode (13, OUTPUT);
  digitalWrite (13, LOW);


}

void loop() {
  // put your main code here, to run repeatedly:



  if (irrecv.decode(&results)) {

    Serial.println (results.value, DEC);

    if (results.value == 16750695) //0
    {
      setLed(1, 1, 0, 0, 0, 0, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16753245) //1
    {
      setLed(0, 0, 1, 0, 0, 0, 0);
      /*
        digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16736925) // 2
    {
      setLed(0, 0, 1, 1, 0, 0, 0);
      /*
        digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, HIGH);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16769565) //3
    {
      setLed(1, 0, 0, 0, 1, 1, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16720605) //4
    {
      setLed(1, 0, 0, 0, 1, 0, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16712445) //5
    {
      setLed(1, 0, 0, 0, 1, 0, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);
        //Blink = 5;
        Blinken();*/
    }

    if (results.value == 16756815) //#
    {
      setLed(1, 1, 1, 1, 1, 1, 1);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, HIGH);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, HIGH);*/
    }

    if (results.value == 16738455) //*
    {
      setLed(0, 0, 0, 0, 0, 1, 0);
      /* digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16748655) //9
    {
      setLed(1, 0, 1, 0, 1, 0, 0);
      /* digitalWrite (Hp0, HIGH);
         digitalWrite (Hp0r, LOW);
         digitalWrite (Hp1, HIGH);
         digitalWrite (Hp2, LOW);
         digitalWrite (Ra121, HIGH);
         digitalWrite (Ra122, LOW);
         digitalWrite (Zs7, LOW);
        }*/
    }
    irrecv.resume();
  }
}
void Blinken (void) {
  if (irrecv.decode(&results)) {


    {
      if (results.value == 16712445) //5
      {
Start:
        digitalWrite (Ra121, HIGH);
        delay (1000);
        digitalWrite (Ra121, LOW);
        delay (1000);
        goto Start;
      }

      if (results.value == 16750695) //0
      {
        digitalWrite (Hp1, HIGH);
      }
    }
  }
}

Haben die jeweiligen Leuchterscheinungen ein Namen ?

du kannst nicht einfach mit delay() arbeiten und parallel auf dein IR Signal warten.

Stell dein geblinke um gemäß IDE Beispiel "BlinkWithoutDelay".
Dann mach dir ein boolsches Flag ob Blinken notwendig ist oder nicht, und blinke nur wenn das flag of true steht
Schalte das boolsche Flag ein oder aus

Wenn das klappt dann geh den zweiten Schritt:
Lies dich ein wenig ein zu "State Machine"
Definiere die Bilder deines Signals.
Gib jedes Bild einen eigenen Status für die State Machine (so wie der Vorposter schon schrieb - welchen "Namen" hat das Bild)
Nimm das IR-Signal und schalte von einem Status in den anderen um.

Ja
0 = Hp00
1 = Hp 1
2 = Hp2
3 = Sh1/Ra12
4 = Zs1 Stand
5 = Zs 7 (das muss ich dann noch eingeben da soll dann die Zs7 Led Leuchten und nicht Ra121)
9 = Zweifelhaftes Signalbild

  • = Kennlicht
    Hashtag = Lampen Test

Wenn ich fragen darf
wieso wird bei setLed
digitalWrite (Hp0, hp0);

2mal Hp0 genannt?

Nee, Groß- und Kleinschreibung werden unterschieden, das sind also zwei gänzlich unterschiedliche Variablen.

Per IR-Befehl steuerst du eine Serie von Led´s an.
Wie wird zum Beispiel die Leuchterscheinung der Led´s genannt, wenn per IR eine [0] gesendet wird ?

So wie ich geschrieben habe oben

Anzeigen
0 = Hp00
1 = Hp 1
2 = Hp2
3 = Sh1/Ra12
4 = Zs1 Stand
5 = Zs 7 (das muss ich dann noch eingeben da soll dann die Zs7 Led Leuchten und nicht Ra121)
9 = Zweifelhaftes Signalbild
stern = Kennlicht
Hashtag = Lampen Test

Per IR-Befehl steuerst du eine Serie von Led´s an.
Wie wird zum Beispiel das Signal genannt, wenn per IR eine [0] gesendet wird ?

Nach Bahnrichtlinien
Halt / Hp0

oder verstehe ich das gerade falsch :sweat_smile:

Sind nicht alles Eisenbahner hier :slightly_smiling_face:

Zum Einstieg: H/V-Signalsystem – Wikipedia
(Jetzt ist es ein Link)

1 Like

Dann müssten wir aber auch Kennlicht, Zs1, Zs7 usw. erklären um alle Funktionen zu erklären :sweat_smile:

Im großen und ganzem Funktioniert es ja einbahnfrei nur Zs1 noch nicht das versuche ich aber gerade :slightly_smiling_face:

Bei Seezeichen steht die Kodierung in der Seekarte :slight_smile:
grafik

Jetzt habe ich versuch mit BlinkWithoutDelay die Led zum Blinken zu bringen, aber gefühlt geht jetzt gar nichts mehr.
Zu beginn hatte ich im Void Loop den Code dafür Extra eigegeben da hat aber die LED dauerhaft geblinkt.
Jetzt habe ich mir gedacht ich möchte ja nur das die LED blinkt wenn ich die 5 betätige daher habe ich unter die Eingabe hinzugefügt jetzt geht aber nichts mehr.

#include <IRremote.h>

int Recv_PIN = 11;
int Hp0 = 2;
int Hp0r = 3;
int Hp1 = 4;
int Hp2 = 5;
int Ra121 = 6;
int Ra122 = 7;
int Zs7 = 8;
int IR_Empf = 11;
//int Blink = 0;

const int ledPin = 6;
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 1000;

IRrecv irrecv (IR_Empf);
decode_results results;

/// functions ///
void setLed(bool hp0, bool hp0r, bool hp1, bool hp2, bool ra121, bool ra122, bool zs7) {
  digitalWrite (Hp0, hp0);
  digitalWrite (Hp0r, hp0r);
  digitalWrite (Hp1, hp1);
  digitalWrite (Hp2, hp2);
  digitalWrite (Ra121, ra121);
  digitalWrite (Ra122, ra122);
  digitalWrite (Zs7, zs7);
}

////////
void setup()
{
  // put your setup code here, to run once:
  irrecv.enableIRIn ();
  Serial.begin (9600);
  pinMode (Hp0 , OUTPUT);
  digitalWrite (Hp0, HIGH);
  pinMode (Hp0r, OUTPUT);
  digitalWrite (Hp0r, HIGH);
  pinMode (Hp1, OUTPUT);
  digitalWrite (Hp1, LOW);
  pinMode (Hp2, OUTPUT);
  digitalWrite (Hp2, LOW);
  pinMode (Ra121, OUTPUT);
  digitalWrite (Ra121, LOW);
  pinMode (Ra122, OUTPUT);
  digitalWrite (Ra122, LOW);
  pinMode (Zs7, OUTPUT);
  digitalWrite (Zs7, LOW);
  pinMode (13, OUTPUT);
  digitalWrite (13, LOW);


}

void loop() {
  // put your main code here, to run repeatedly:

unsigned long currentMillis = millis ();

  if (irrecv.decode(&results)) {

    Serial.println (results.value, DEC);

    if (results.value == 16750695) //0
    {
      setLed(1, 1, 0, 0, 0, 0, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16753245) //1
    {
      setLed(0, 0, 1, 0, 0, 0, 0);
      /*
        digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16736925) // 2
    {
      setLed(0, 0, 1, 1, 0, 0, 0);
      /*
        digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, HIGH);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16769565) //3
    {
      setLed(1, 0, 0, 0, 1, 1, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16720605) //4
    {
      setLed(1, 1, 0, 0, 0, 0, 1);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, HIGH);*/
    }

    if (results.value == 16712445) //5
    {
      setLed(1, 0, 0, 0, 1, 0, 0);
        
     if (currentMillis - previousMillis >= interval)
       {
           previousMillis = currentMillis;
             if (ledState == LOW) 
               {
                ledState = HIGH;
               }
               else
                {
                 ledState = LOW;
                }
    digitalWrite (ledPin, ledState);
  }
    }
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);
        //Blink = 5;
        Blinken();*/
    }

    if (results.value == 16756815) //#
    {
      setLed(1, 1, 1, 1, 1, 1, 1);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, HIGH);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, HIGH);*/
    }

    if (results.value == 16738455) //*
    {
      setLed(0, 0, 0, 0, 0, 1, 0);
      /* digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16748655) //9
    {
      setLed(1, 0, 1, 0, 1, 0, 0);
      /* digitalWrite (Hp0, HIGH);
         digitalWrite (Hp0r, LOW);
         digitalWrite (Hp1, HIGH);
         digitalWrite (Hp2, LOW);
         digitalWrite (Ra121, HIGH);
         digitalWrite (Ra122, LOW);
         digitalWrite (Zs7, LOW);
        }*/
    }
    irrecv.resume();

  

}
/*void Blinken (void) {
  if (irrecv.decode(&results)) {


    {
      if (results.value == 16712445) //5
      {
Start:
        digitalWrite (Ra121, HIGH);
        delay (1000);
        digitalWrite (Ra121, LOW);
        delay (1000);
        goto Start;
      }

      if (results.value == 16750695) //0
      {
        digitalWrite (Hp1, HIGH);
      }
    }
  }
}*/

Dein Blinken muss aus der if Kaskade heraus!
Es muss eine eigenständige Nebenläufigkeit werden.

#include <IRremote.h>

int Recv_PIN = 11;
int Hp0 = 2;
int Hp0r = 3;
int Hp1 = 4;
int Hp2 = 5;
int Ra121 = 6;
int Ra122 = 7;
int Zs7 = 8;
int IR_Empf = 11;
//int Blink = 0;

const int ledPin = 6;
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 1000;

IRrecv irrecv (IR_Empf);
decode_results results;

/// functions ///
void setLed(bool hp0, bool hp0r, bool hp1, bool hp2, bool ra121, bool ra122, bool zs7) {
  digitalWrite (Hp0, hp0);
  digitalWrite (Hp0r, hp0r);
  digitalWrite (Hp1, hp1);
  digitalWrite (Hp2, hp2);
  digitalWrite (Ra121, ra121);
  digitalWrite (Ra122, ra122);
  digitalWrite (Zs7, zs7);
}

////////
void setup()
{
  // put your setup code here, to run once:
  irrecv.enableIRIn ();
  Serial.begin (9600);
  pinMode (Hp0 , OUTPUT);
  digitalWrite (Hp0, HIGH);
  pinMode (Hp0r, OUTPUT);
  digitalWrite (Hp0r, HIGH);
  pinMode (Hp1, OUTPUT);
  digitalWrite (Hp1, LOW);
  pinMode (Hp2, OUTPUT);
  digitalWrite (Hp2, LOW);
  pinMode (Ra121, OUTPUT);
  digitalWrite (Ra121, LOW);
  pinMode (Ra122, OUTPUT);
  digitalWrite (Ra122, LOW);
  pinMode (Zs7, OUTPUT);
  digitalWrite (Zs7, LOW);
  pinMode (13, OUTPUT);
  digitalWrite (13, LOW);


}

void loop() {
  // put your main code here, to run repeatedly:

unsigned long currentMillis = millis ();

  if (irrecv.decode(&results)) {

    Serial.println (results.value, DEC);

    if (results.value == 16750695) //0
    {
      setLed(1, 1, 0, 0, 0, 0, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16753245) //1
    {
      setLed(0, 0, 1, 0, 0, 0, 0);
      /*
        digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16736925) // 2
    {
      setLed(0, 0, 1, 1, 0, 0, 0);
      /*
        digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, HIGH);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16769565) //3
    {
      setLed(1, 0, 0, 0, 1, 1, 0);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16720605) //4
    {
      setLed(1, 1, 0, 0, 0, 0, 1);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, HIGH);*/
    }

    if (results.value == 16712445) //5
    {
      setLed(1, 0, 0, 0, 1, 0, 0);
        
     
    }
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, LOW);
        digitalWrite (Zs7, LOW);
        //Blink = 5;
        Blinken();*/
    

    if (results.value == 16756815) //#
    {
      setLed(1, 1, 1, 1, 1, 1, 1);
      /*
        digitalWrite (Hp0, HIGH);
        digitalWrite (Hp0r, HIGH);
        digitalWrite (Hp1, HIGH);
        digitalWrite (Hp2, HIGH);
        digitalWrite (Ra121, HIGH);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, HIGH);*/
    }

    if (results.value == 16738455) //*
    {
      setLed(0, 0, 0, 0, 0, 1, 0);
      /* digitalWrite (Hp0, LOW);
        digitalWrite (Hp0r, LOW);
        digitalWrite (Hp1, LOW);
        digitalWrite (Hp2, LOW);
        digitalWrite (Ra121, LOW);
        digitalWrite (Ra122, HIGH);
        digitalWrite (Zs7, LOW);*/
    }

    if (results.value == 16748655) //9
    {
      setLed(1, 0, 1, 0, 1, 0, 0);
      /* digitalWrite (Hp0, HIGH);
         digitalWrite (Hp0r, LOW);
         digitalWrite (Hp1, HIGH);
         digitalWrite (Hp2, LOW);
         digitalWrite (Ra121, HIGH);
         digitalWrite (Ra122, LOW);
         digitalWrite (Zs7, LOW);
        }*/
    }
    irrecv.resume();

  

}
if (currentMillis - previousMillis >= interval)
       {
           previousMillis = currentMillis;
             if (ledState == LOW) 
               {
                ledState = HIGH;
               }
               else
                {
                 ledState = LOW;
                }
    digitalWrite (ledPin, ledState);
  }
}
/*void Blinken (void) {
  if (irrecv.decode(&results)) {


    {
      if (results.value == 16712445) //5
      {
Start:
        digitalWrite (Ra121, HIGH);
        delay (1000);
        digitalWrite (Ra121, LOW);
        delay (1000);
        goto Start;
      }

      if (results.value == 16750695) //0
      {
        digitalWrite (Hp1, HIGH);
      }
    }
  }
}*/

so dann blinkt ja die LED dauerhaft.
Ich möchte ja nur das die Led Blinkt ich die 5 Betätige und wenn ich 0 betätige wieder Aus geht.
da hängt es jetzt bei mir.

Wurde ja eben schon gesagt:
Jetzt musst du noch einen Merker einführen, z.B.
bool blinkanforderung;

Dein Blinker sollte dann diese Variable auswerten.
Und dein IR Auswerter, kann dieses setzen, oder löschen.

Und Zack, blinkt es nur dann, wenn du willst.