Countdown millis() ersetzen

Gast #4318696
Lesenswert?
• ▲
▼
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?
Gast #4318726
Lesenswert?
• ▲
▼
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
Gast #4319621
Lesenswert?
• ▲
▼
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
Gast #4319960
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.