Hallo liebe Gemeinschaft
ich bin ziemlich neu im Bereich der Arduino programmierung, bitte vergebt mir daher das Unwissen.
Folgendes Problem versuche ich zu lösen:
Ich möchte eine LED über einen Schalter einschalten, diese sollte für eine vordefinierte Zeit leuchten und von alleine wieder aus gehen. Mit dem Delay Befehl habe ich es geschafft, allerdings möchte ich das ganze lieber mit dem millis() Befehl durchführen, um das komplette Programm nicht zu beeinflussen.
Die LED soll über eine KSQ mithilfe von PWM hoch- und herunterdimmen.
Hier ist der Code, den ich geschrieben habe. Leider leuchtet in diesem Fall die LED nur, wenn man den Taster drückt. Beim Loslassen geht sie direkt wieder aus.
Kann mir jemand meinen Fehler zeigen?
Code:
int LED=9;
int taster=8;
int tasterstatus=0;
unsigned long timer;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(taster, INPUT);
}
void loop()
{
tasterstatus=digitalRead(taster);
if(tasterstatus == HIGH)
{
timer = millis(), digitalWrite(LED, LOW);
}
else
{
digitalWrite(LED, HIGH);
}
if (millis() - timer >=3000)
{
digitalWrite(LED, HIGH);
}
}
Aufgrund der KSQ sind die HIGH und LOW Werte für die LED vertauscht.
Und hier der Code, in der die LED dimmen kann, allerdings mit dem Delay Befehl den ich gern ersetzen würde
Code:
int LED=9;
int taster=8;
int tasterstatus=0;
int faderschritte = 30;
int faderschritte_down = 5;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(taster, INPUT);
}
void loop()
{
tasterstatus=digitalRead(taster);
if(tasterstatus == HIGH)
{
for (int helligkeit = 255; helligkeit >0;)
{
analogWrite(LED, helligkeit);
helligkeit = helligkeit - faderschritte;
delay(30);
}
delay (3000);
for (int helligkeit = 0; helligkeit < 255;)
{
analogWrite(LED, helligkeit);
helligkeit = helligkeit + faderschritte_down;
delay(25);
}
}
else
{
digitalWrite(LED, HIGH);
}
}
Lesezeichen