Led will nach Delay nicht ausgehen

Hallo !

Ich hätte eine Frage bezüglich meines Arduino Programmes. Und zwar ich lese in den Input das Signal eines Drehschalters ein Logisch 1 oder 0. Und ich will wenn der Eingang auf 1 gesetzt ist das eine LED angeht und nach einer Zeit wieder ausgeht, aber das gelingt mir nicht darum bitte ich euch um Hilfe.

Code:

int pinSchalterStellung6 = 8;
int pinLed7 = 6;

void setup (){
 
 pinMode(8,INPUT);
 pinMode(6,OUTPUT);
       
 }
 
void loop(){
   
 if(digitalRead(8)==HIGH)
   {
     digitalWrite(6,HIGH);
     delay(1000);
     digitalWrite(6,LOW);
   }
 else
  {
     digitalWrite(6,LOW);
  }

  }

Ich hoffe ihr könnt mir helfen

LG

Der Smilie sollte die Nummer 8 darstellen

In meiner Glaskugel sehe ich einen kleinen einfachen endlichen Automaten.

Schau dir auch das BlinkWithoutDelay Beispiel an.

Ist dein Schalter die ganze Zeit auf HIGH gesetzt?
Wenn ja, dann kann die LED auch nicht ausgehen....

Dein Read-Befehl ist falsch:

if(digitalRead( 8 ) == HIGH){

usw.

muss es heißen.
Und es muss ein Pullup am Eingang vorhanden sein.

if(digitalRead(8)==HIGH)

Kann man vereinfachen zu

  if(digitalRead(8))

Ist aber beides voll korrekt.

PS:
Wenn du den Code in die Code-Tags packst, dann macht das Forum da auch keine Smilies rein!

Wenn der Drehschalter eine Stellung erreicht bleibt er ganze Zeit am Eingang Logisch 1 deswegen wird wahrscheinlich auch die LED nicht ausgehen aber was kann man dagegen machen ?

Außerdem habe ich Pull Down Widerstände benutzt

Habe gerade gesehen, der Editor ändert die Darstellung:

(8) ohne Leerzeichen, wird Smilie, ( 8 ) wird richtig

ich glaube, der Smilie ist ne " 8 ) " !

Speedcore016:
Außerdem habe ich Pull Down Widerstände benutzt

Ja, ist ok, du prüfst ja auf HIGH.

Speedcore016:
Wenn der Drehschalter eine Stellung erreicht bleibt er ganze Zeit am Eingang Logisch 1 deswegen wird wahrscheinlich auch die LED nicht ausgehen aber was kann man dagegen machen ?

Wie gesagt: Einen kleinen Zustandsautomaten bauen.
3 Zustände sollten reichen.

  1. Warte auf Schalterstellung ON
  2. LED brennt
  3. Warte auf Schalterstellung OFF

Speedcore016:
Außerdem habe ich Pull Down Widerstände benutzt

Das ist OK.

Ist die Led evtl falsch angeschlossen?

Nein die LED ist richtig angeschlossen. Ich will das die LED wieder ausgeht wenn der Drehschalter noch in dieser Position ist also auf logisch 1 ist

Speedcore016:
Nein die LED ist richtig angeschlossen. Ich will das die LED wieder ausgeht wenn der Drehschalter noch in dieser Position ist also auf logisch 1 ist

Das versteh ich ja, deshalb die Nachfrage.

Es sieht so aus, als ob die LED Anode gegen +5V und Kathode gegen Ausgang geschaltet ist und dadurch immer leuchtet. Widerstand ist auch vorhanden?

Ich glaube hier fehlt ein Schaltbild.

HotSystems:
Es sieht so aus, als ob die LED Anode gegen +5V und Kathode gegen Ausgang geschaltet ist und dadurch immer leuchtet. Widerstand ist auch vorhanden?

Die LED leuchtet, weil der Schalter auf 1 bleibt.
Die LED leuchtet, weil Speedcore016 keinen Automaten gebaut hat, welcher die LED abschaltet.

combie:
Die LED leuchtet, weil der Schalter auf 1 bleibt.
Die LED leuchtet, weil Speedcore016 keinen Automaten gebaut hat, welcher die LED abschaltet.

Combie, du hast recht.

Er kann es feststellen, wenn er hinter den Befehl "digitalWrite(6,LOW);

ebenfalls ein delay(1000); setzt. Dann blinkt es. :smiley:

Okay ich werd mal diesen Tutorial verwenden um mein Problem zu lösen falls ich es nicht schaffe melde ich mich wieder

versuch es mal so

int pinSchalterStellung6 = 8;
int pinLed7 = 6;
boolean state=1
void setup (){
  
  Serial.begin(9600);
  pinMode(8,INPUT);
  pinMode(6,OUTPUT);
       
  }
 
 void loop(){
   
  if(digitalRead(8) && state)
  
    {
       digitalWrite(6,HIGH);
      delay(1000);
    }
 
      digitalWrite(6,LOW); state = 0;
   
  }

Speedcore016:
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

Okay ich werd mal diesen Tutorial verwenden um mein Problem zu lösen falls ich es nicht schaffe melde ich mich wieder

Ich glaube damit wirst du dein Ziel nicht erreichen.
Das wird die Led auch blinken lassen, ohne ein delay.

Sieh dir diese Library an, da kannst du viele Dinge Timer-gesteuert laufen lassen.

http://playground.arduino.cc/Code/SimpleTimer

Ob es nun blinken soll, oder zeitverzögert und wiederholt ein bzw. ausschalten soll, das geht super mit diesem Timer.