PWM - Sheduler

Liebe Kollegen,

Habe ein kleines Problem. Solange ich den Code ohne den mini Sheduler verwende funktioniert der Code hervorragend. Ich empfange die PWM Signale und werte diese aus. Je nach dem wo der Schalter beim Remote Controller steht geht die LED an oder aus.

Jetzt möchte ich die LED noch blinken lassen. Statt delay wollte ich den mini Sheduler verwenden (siehe <--HIER-->). Jedoch springt der Code dann auf setup() und lässt diese in einer unendlich Schleife laufen.

Später kommt der Sheduler in die IF Schleife.

Besten Dank.
HomerJunior


CODE:

//PINs für LEDs
int pin13=13;

//PINs für Channel
int pin2=2;
int pin3=3;

//Variable für LEDStatus
int State=LOW;

//Variablen für PWM SIgnale
double channel[1]; //Zum auswerten von 2 Signal Eingängen
                   //0=Channel 7, 1=Channel 11

//Variablen für den eigenen Sheduler
unsigned long previousMillis=0;
unsigned long interval=1000;
 

void setup()
{
  //Channel Eingänge
  pinMode(pin2, INPUT);
  pinMode(pin3, INPUT);
  
  pinMode(pin13, OUTPUT);
  Serial.begin(9600);
  digitalWrite(pin13, LOW); 

  Serial.println("SETUP");
}

void loop()
{
  channel[0] = pulseIn(pin2, HIGH); // Der übergeben Wert ist "HIGH". Es wird gewartet bis PIN auf HIGH gezogen ist. Startet Timer bis wieder LOW ist. Pulse länge in us wird retour gegeben. Möglich ist auch ein Timer mitzugeben  10 microseconds to 3 minutes, pulseIn(pin, value, timeout)
  channel[1] = pulseIn(pin3, HIGH);

  //Ausgabe in Serial Monitor  
  Serial.print(channel[0]);
  Serial.print(" -- ");
  Serial.println(channel[1]);

      //mini Sheduler <--HIER-->
      if(millis()-previousMillis >= interval)
      {
        previousMillis = millis(); //aktuelli zeit speichere    

      }

  if(channel[1]<=1007)
  {
    if(channel[0]<=1003)
    {
        digitalWrite(pin13, HIGH);
    }
    else
    {
       digitalWrite(pin13, LOW);
    }
  }
  else
  {
      digitalWrite(pin13, LOW);
  }
}

double channel[1];
...
channel[0] = pulseIn(pin2, HIGH);
channel[1] = pulseIn(pin3, HIGH);

mit channel[1] definirst Du ein Array mit 1 Element und nicht mit 2 wie Du es nachher verwendest.

Dieser Indexfehler kann alle möglichen, unmöglichen und katastropahlen Fehlerbilder ergeben.

Grüße Uwe

Super vielen Dank euch! Es war das Array. Habe es nicht gesehen :slight_smile:
Mit dem Code werde ich dann Später ein Relay ansteuern. Mit den min Sheduler werde ich die Dauer angeben für die Schliessung des Stromkreises.

Schönen Abend noch.