Arduino millis()-delay ungenau

OP #5253521
Lesenswert?

Hallo alle zusammen und schon mal frohe Weihnachten,
allerdings habe ich ein kleines Problem welches das timen ohne delay in 
der Arduino-Umgebung angeht. Ich möchte eine LED für 6 Sekunden angehen 
lassen und wieder danach ausschalten und das auf Knopfdruck. Ich habe 
mir schon einen entsprechenden Sketch geschrieben, der auch prinzipiell 
funktionier nur stimmt die Wartezeit überhaupt nicht. Ich bekomme bei 
jedem Versuch andere Werte die von ca. 2 bis 5 Sekunden variieren, 
jedoch kein einziges Mal 6 Sekunden. Kann mir eventuell jemand einen 
Denkanstoß geben woran das liegen kann?

Hier noch mein Code:
1
int buttonPin = 2;
2
int ledPin = 13;
3
int ledState = LOW;
4

5
unsigned long current;
6
unsigned long previous = 0;
7

8
void setup(){
9

10
  pinMode(buttonPin, INPUT);
11
  pinMode(ledPin, OUTPUT);
12

13
}
14

15
void loop(){
16

17
  current = millis();
18

19
  if(digitalRead(buttonPin) == HIGH && ledState == LOW){
20
  
21
  digitalWrite(ledPin, HIGH);
22
  ledState = HIGH;
23
  
24
  }
25
  
26
  if(current - previous > 6000){
27
  
28
  if(ledState == HIGH){
29
  
30
    digitalWrite(ledPin, LOW);
31
    ledState = LOW;
32
    
33
  }
34
  
35
  previous = current;
36
  
37
  } 
38
  
39
}

MFG
Lukas
Gast #5253528
Lesenswert?

Lukas D. schrieb:
> Kann mir eventuell jemand einen
> Denkanstoß geben woran das liegen kann?

Du bist jetzt schon zweiainhalb Jahre hier angemeldet und
schaffst es nicht deinen Code hier bernünftig zu posten
und in [c] Tags zu klammern?

Noch nie gelesen was hier vor jedem Textfenster zum
Posten steht?

>> Wichtige Regeln - erst lesen, dann posten!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren