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