int LED=9;
int Helligkeit=0; // Pulsweite --> Beeinflusst die Helligkeit:
int Stufe=5; // Änderung der Pulsweite:
int heller=2; //Zum Konfigurieren der Taster:
int dunkler=4;
int Ein=0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(heller, INPUT);
pinMode(dunkler, INPUT);
}
void loop() {
//LED Ausschalten
if(Ein=0){
analogWrite(LED, 0);
delay(100);
Ein=1;
}
//Einschalten:
if(digitalRead(7)==HIGH&&Ein==0){
Ein=1;
delay(100);
}
//Ausschalten:
if(digitalRead(7)==HIGH&&Ein==1){
Ein=0;
delay(100);
}
while(Ein==1){
analogWrite(LED, Helligkeit);
//verringern der Lechtstärke:
if(digitalRead(dunkler)==HIGH&&Helligkeit>=5) {
Helligkeit=Helligkeit-Stufe;
delay(50);
}
//erhöhen der Lichtstärke:
if(digitalRead(heller)==HIGH&&Helligkeit<=250) {
Helligkeit=Helligkeit+Stufe;
delay(50);
}
}
}
Das Einschalten und Dimmen der angeschlossenen LED funktioniert auch. Aber die LED soll wieder mit Ausgeschaltet werden über den gleichen Taster, wie auch eingeschaltet wird. Damit der Taster entprellt wird habe ich die Wartezeit eingebaut.
Auf die Verbesserungsvorschläge bin ich schon gespannt und möchte mich im vorhinein schon mal herzlich für die Hilfe Bedanken
Vielen Dank für die Hilfe,
Ich habe nun den Code etwas überarbeitet, aber immer noch keinen Erfolg.
Die LED lässt sich erst steuern sobald ich das Erste mal den Taster für ein taste. Danach lässt sich die LED aber nicht mehr mit dem gleichen Taster ausschalten. Die LED lässt sich weiterhin steuern. Daher habe ich die Annahme, dass ich weiterhin in der "while-Schleife" bin.
int LED=9;
int Helligkeit=0; // Pulsweite --> Beeinflusst die Helligkeit:
int Stufe=5; // Änderung der Pulsweite:
int heller=2; //Zum Konfigurieren der Taster:
int dunkler=4;
int Ein=0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(heller, INPUT);
pinMode(dunkler, INPUT);
Serial.begin(9600);
}
void loop() {
//Ausschalten:
if(digitalRead(7)==HIGH&&Ein==1){
Ein=0;
delay(100);
}
//Einschalten:
if(digitalRead(7)==HIGH&&Ein==0){
Ein=1;
delay(100);
}
//LED Ausschalten
if(Ein==0){
analogWrite(LED,0);
delay(100);
}
while(Ein==1){
analogWrite(LED, Helligkeit);
//verringern der Lechtstärke:
if(digitalRead(dunkler)==HIGH&&Helligkeit>=5) {
Helligkeit=Helligkeit-Stufe;
delay(50);
}
//erhöhen der Lichtstärke:
if(digitalRead(heller)==HIGH&&Helligkeit<=250) {
Helligkeit=Helligkeit+Stufe;
delay(50);
}
}
}
Vielen Dank für die Hilfe.
Nun funktioniert es. Die Ausschaltbedingung ist jetzt in der While-Schleife mit einem Break (weniger Arbeit).
Die while-schleife hatte ich ursprünglich genommen um die Ein und Ausschaltbedingungen vom steuern zu trennen.