Hallo zusammen, habe gerade ein altes Projekt mit dem arduino one neu ins Leben gerufen. Ich hatte eine Zeitanzeige für das Bogenschiessen vie LiteC geschrieben. Da die immer einen PC oder ein Notebook benötigt habe ich jetzt das Bedürfnis dies mit einem arduino zu lösen. Zur zeit habe ich ein vierstelliges 7-Segment Display für die Zeitanzeige, 3 LED für die Ampel und einen Piezo für das akustischen Signale zum laufen gebracht. Das ganze starte ich mit einer IR Fernbedienung. Die Funktion die den Countdown ausführt begint mit folgender Zeile: if((millis()/1000) < start_num) wobei start_num für die gewählte Zeit, in diesem Fall 120sec., steht. mein problem ist jetzt das millis() die verstrichen Zeit seit dem Start des arduino bzw. seit dem reset ist und somit alles nach 120 sec. vorbei ist. es soll aber zusätzich eine Pausefunktion und einen Neustart geben. gibt es eine ander Lösung für mein Problem?
ein teil des Problems habe ich bereits gelöst:
1 | if(ein == 1) |
2 | {
|
3 | if(aus ==0) |
4 | {
|
5 | time2 = millis()+1000; |
6 | aus = 1; |
7 | peep2(); |
8 | }
|
9 | |
10 | |
11 | Hauptteil(); |
12 | }
|
13 | else
|
14 | {
|
15 | peep1(); |
16 | }
|
17 | |
18 | }
|
19 | //ende loop
|
20 | ///////////////////////////////////////////
|
21 | |
22 | void Hauptteil() |
23 | {
|
24 | //Haupschleife mit abwärtscounter
|
25 | if(((millis()- time2)/1000) < start_num) |
jetzt fehl nur noch diei Stop- und Resetfunktion
:
Bearbeitet durch User
habe jetzt mal einen anderen ansatzt gewählt: void Vorlaufzeit() { peep1(); for (int i=0; i<1000;i++) { displayNumber((1000-i)/100+1); } } leider begint der Count zwar bei 10 und zählt im sekundentakt runter endet dann aber nicht bei Null oder ein sondern begint nach der eins von Vorne. Das ganze in eine abfrage zu verpacken bringt auch nicht es läuft und läuft und läuft immmer weiter if(ein =1) { Vorlaufzeit(); } erbitte dringend hilfe
habe wie folgt gelöst
1 | void Vorlaufzeit() |
2 | {
|
3 | if(vorzeit > 0)//Startet die vorlaufzeit mit 10 sec. |
4 | {
|
5 | vorzeit = vorzeit - 1; |
6 | displayNumber(vorzeit / 10); |
7 | |
8 | digitalWrite(LED_gruen, LOW); |
9 | digitalWrite(LED_gelb, LOW); |
10 | digitalWrite(LED_rot, HIGH); |
11 | |
12 | }
|
13 | else// wennvorlaufzeit abgelauen dann gehts weiter |
14 | {
|
15 | if(p2 > 1) |
16 | {
|
17 | peep2(); |
18 | }
|
19 | else
|
20 | {
|
21 | if(start_num > 0)//zählt von 120 runter |
22 | {
|
23 | start_num = start_num -1; |
24 | displayNumber(start_num / 10); |
25 | if((start_num/ 10) > 300) |
26 | {
|
27 | digitalWrite(LED_gruen, HIGH); |
28 | digitalWrite(LED_gelb, LOW); |
29 | digitalWrite(LED_rot, LOW); |
30 | }
|
31 | else
|
32 | {
|
33 | digitalWrite(LED_gruen, LOW); |
34 | digitalWrite(LED_gelb, HIGH); |
35 | digitalWrite(LED_rot, LOW); |
36 | }
|
37 | }
|
38 | else
|
39 | {
|
40 | if(p4 > 1) |
41 | {
|
42 | peep4(); |
43 | digitalWrite(LED_gruen, LOW); |
44 | digitalWrite(LED_gelb, LOW); |
45 | digitalWrite(LED_rot, HIGH); |
46 | }
|
47 | else
|
48 | {
|
49 | digitalWrite(LED_gruen, LOW); |
50 | digitalWrite(LED_gelb, LOW); |
51 | digitalWrite(LED_rot, HIGH); |
52 | displayNumber(0); |
53 | //start_num = 2;
|
54 | }
|
55 | }
|
56 | }
|
57 | }
|
58 | }
|
Danke
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.