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

