Hallo an alle,
kann mir jemand helfen um verschiedene Subprogramme in einen zeitlichen Ablauf und Schleife zu bringen? Es sind 3 LED's die ich aktuell nur von 1 auf 2 auf 3 bekomme aber nicht mehr rückwärts und geschweige denn einen erneuten Loop. Im Moment sind die Subprogramme nur fürs LED faden. Benötige ich für den Ablauf auch noch Programme fürs On/Off, damit diese Zeiten ebenfalls definiert sind?
Mein Programmcode ist:
int L1FI=0; // Zeitpunkt Fade in LED1
int L1FO =8000; // Zeitpunkt Fade out LED1
int L2FI=8000; // Zeitpunkt Fade in LED2
int L2FO =16000; // Zeitpunkt Fade out LED2
int L3FI=16000; // Zeitpunkt Fade in LED3
int L3FO =24000; // Zeitpunkt Fade out LED3
int LED1 = 9; // LED 1
int LED2 = 10; // LED 2
int LED3 = 11; // LED 3
int ledState1 =0; // Status LED 1
int ledState2 =0; // Status LED 2
int ledState3 =0; // Status LED 3
const int fadeAmount1 = 5; // Stufen im Fadingraster LED1
const int fadeAmount2 = 5; // Stufen im Fadingraster LED2
const int fadeAmount3 = 5; // Stufen im Fadingraster LED3
const long interval11 = 40; // Zeitraum zwischen Fadingstufen LED1
const long interval12 = 40; // Zeitraum zwischen Fadingstufen LED2
const long interval13 = 40; // Zeitraum zwischen Fadingstufen LED3
unsigned int brightness1 = 0; // aktuelle Helligkeit der LED1
unsigned int brightness2 = 0; // aktuelle Helligkeit der LED2
unsigned int brightness3 = 0; // aktuelle Helligkeit der LED3
unsigned long Laufzeit; // Timer für Ablauf
unsigned long Trigger; // Timer für Ablauf
unsigned long previousMillis1 = 0; // Timer für Fading LED 1
unsigned long currentMillis1; // Timer für Fading LED 1
unsigned long previousMillis2 = 0; // Timer für Fading LED 2
unsigned long currentMillis2; // Timer für Fading LED 2
unsigned long previousMillis3 = 0; // Timer für Fading LED 3
unsigned long currentMillis3; // Timer für Fading LED 3
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup ()
{
Serial.begin(9600);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void loop()
{
Serial.println(ledState1);
Serial.println(ledState2);
Serial.println(ledState3);
Trigger=millis();
if(Trigger - Laufzeit > L1FI && ledState1 == 0)
LED1_FI();
if(Trigger - Laufzeit > L1FO && ledState1 == 1)
LED1_FO();
if(Trigger - Laufzeit > L2FI&& ledState2 == 0)
LED2_FI();
if(Trigger - Laufzeit > L2FO&& ledState2 == 1)
LED2_FO();
if(Trigger - Laufzeit > L3FI&& ledState3 == 0)
LED3_FI();
if(Trigger - Laufzeit > L3FO&& ledState3 == 1)
LED3_FO();
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LED1_FI()
{
currentMillis1 = millis();
if((brightness1 < 255) && (currentMillis1 - previousMillis1 > interval11))
{
previousMillis1 = currentMillis1;
analogWrite(LED1, brightness1); // erhöhe die Helligkeit der LED ->
brightness1 = brightness1 + fadeAmount1; // in den Schritten wie oben definiert
}
if (brightness1 == 255)
{
ledState1 =1;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LED1_FO()
{
currentMillis1 = millis();
if((brightness1 > 0) && (currentMillis1 - previousMillis1 > interval11))
{
previousMillis1 = currentMillis1;
analogWrite(LED1, brightness1); // veringere die Helligkeit der LED <-
brightness1 = brightness1 - fadeAmount1; // in den Schritten wie oben definiert
}
if (brightness1 == 0)
{
ledState1 =2;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LED2_FI()
{
currentMillis2 = millis();
if((brightness2 < 255) && (currentMillis2 - previousMillis2 > interval12))
{
previousMillis2 = currentMillis2;
analogWrite(LED2, brightness2); // erhöhe die Helligkeit der LED ->
brightness2 = brightness2 + fadeAmount2; // in den Schritten wie oben definiert
}
if (brightness2 == 255)
{
ledState2 =1;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LED2_FO()
{
currentMillis2 = millis();
if((brightness2 > 0) && (currentMillis2 - previousMillis2 > interval12))
{
previousMillis2 = currentMillis2;
analogWrite(LED2, brightness2); // veringere die Helligkeit der LED <-
brightness2 = brightness2 - fadeAmount2; // in den Schritten wie oben definiert
}
if (brightness2 == 0)
{
ledState2 =2;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LED3_FI()
{
currentMillis3 = millis();
if((brightness3 < 255) && (currentMillis3 - previousMillis3 > interval13))
{
previousMillis3 = currentMillis3;
analogWrite(LED3, brightness3); // erhöhe die Helligkeit der LED ->
brightness3 = brightness3 + fadeAmount3; // in den Schritten wie oben definiert
}
if (brightness3 == 255)
{
ledState3 =1;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LED3_FO()
{
currentMillis3 = millis();
if((brightness3 > 0) && (currentMillis3 - previousMillis3 > interval13))
{
previousMillis3 = currentMillis3;
analogWrite(LED3, brightness3); // veringere die Helligkeit der LED <-
brightness3 = brightness3 - fadeAmount3; // in den Schritten wie oben definiert
}
if (brightness3 == 0)
{
ledState3 =2;
}
}
Vielen Dank für Feedback.