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);
}
}