INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
timer ohne delay
29.09.2014, 19:14
Beitrag #1
timer ohne delay
hallo
kann mir einer von euch sagen warum mein Timer-Programm nicht funktioniert?

Code:
int led=6;
int taster=7;
int tasterstatus=0;

unsigned long letzteMillis = 0;
unsigned long intervall = 10000;        



void setup()

{
Serial.begin(9600);
pinMode(led, OUTPUT);

pinMode(taster, INPUT);

}



void loop()

{

tasterstatus=digitalRead(taster);

if (tasterstatus == HIGH)
        {
        
     timer();
        digitalWrite(led, HIGH);
        }

}


void timer ()
{
  
unsigned  letzteMillis = millis();

     while((millis() - letzteMillis) < intervall);
       {}    
       }


Danke
mfG
Hannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.09.2014, 19:37
Beitrag #2
RE: timer ohne delay
Hi,
Pulldown-Widerstand vergessen?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.09.2014, 20:14 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2014 20:15 von binderj1.)
Beitrag #3
RE: timer ohne delay
nein Schaltung ist OK

wenn ich nach dem up-load oder dem RESET den Taster drücke beginnt nach 10sec. die LED zuleuchten (so soll es auch sein)
wenn ich nach dem up-load oder dem RESET ca 1min warte und dann den Taster drücke beginnt die LED sofort zu leuchten.

Warum??

lG
Hannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.09.2014, 20:25 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2014 20:27 von Thorsten Pferdekämper.)
Beitrag #4
RE: timer ohne delay
Ah jetzt ja:

unsigned letzteMillis = millis();

Das muss ein unsigned long sein, also

unsigned long letzteMillis = millis();

Sonst ist es nur ein unsigned int, der ist zu klein.
...oder Du schreibst das ganze nicht als Deklaration, also:

letzteMillis = millis();

Dann verwendet die Funktion timer die globale Variable und legt nicht eine neue lokale an.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2014, 06:36
Beitrag #5
RE: timer ohne delay
Danke
mein Timer läuft.


eine Frage noch:
Kann man so ein Timer-Prog in eine Datei packen, die dann mit "#include <timer.ino> geladen wird.
Timeraufruf im Prog würde dann so aussehen "timer(5000);"

ist das machbar?

mfg
Hannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2014, 08:02 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2014 08:05 von tito-t.)
Beitrag #6
RE: timer ohne delay
lohnt sich das denn?
es sind doch im Prinzip nur 2-3 Zeilen!

Code:
unsigned long  letzteMillis, interval;
void timer () {
  letzteMillis = millis();
  while((millis() - letzteMillis) < intervall);  
}

dafür einen extra header?

oder willst du auch den ganzen Tasterkram mit in den Header packen? Das wäre aber auf die Dauer doch sicher zu unflexibel...?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2014, 08:04
Beitrag #7
RE: timer ohne delay
Hi,
klar, das kann man machen. Mir ist nur nicht so ganz klar, warum. Dann kann man gleich delay(5000) verwenden. Hier ist die Source von delay:
Code:
void delay(unsigned long ms)
{
    uint16_t start = (uint16_t)micros();

    while (ms > 0) {
        yield();
        if (((uint16_t)micros() - start) >= 1000) {
            ms--;
            start += 1000;
        }
    }
}
D.h. es macht im Prinzip auch nichts anderes, nur etwas genauer. Was für Vorteile hat Deine Funktion?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2014, 08:24 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2014 09:00 von tito-t.)
Beitrag #8
RE: timer ohne delay
finde ich auch -
Sinn würde es nur machen, wenn man unterhalb der interval-Zeit aus der Abfrage rausspringt, um dann stattdessen was anderes zu machen:

Code:
unsigned long  letzteMillis, interval;
unsigned long checktimer () {
  if (millis() - letzteMillis) < intervall) return (millis() - letzteMillis);
  else return (0); // interval erreicht
}
  
{
  // ...
  unsigned long deltaT;
  deltaT=checktimer();
  if (0 == deltaT ) {
     letzteMillis = millis(); // timer auf null
     ....  // Timer erreicht => tu was !
  }
  else ... // warte nicht sondern tu was anderes inzwischen
  // ...
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Countdown Timer Uwe1475 23 743 19.10.2016 18:33
Letzter Beitrag: Uwe1475
  Delay nurmili 2 220 10.07.2016 16:55
Letzter Beitrag: nurmili
  Problem mit Delay und Millis funnyzocker 1 461 26.06.2016 09:54
Letzter Beitrag: hotsystems
  (Mega) Timer 3 A, B & C Scheams 0 231 04.06.2016 17:09
Letzter Beitrag: Scheams
  PID ohne Library MeisterQ 5 533 01.05.2016 09:23
Letzter Beitrag: MeisterQ
  nur ein URL aufruf ohne PHP toto1975 3 610 05.04.2016 08:26
Letzter Beitrag: iks77
  Arduino MEGA2560 Timer PWM Einsteiger94 3 666 04.04.2016 10:38
Letzter Beitrag: RMR
  Timer Interrupt Anfängerprobleme Fox 4 623 05.03.2016 02:28
Letzter Beitrag: Fox
  OUTPUT bleibt HIGH und timer stopt nicht. Atwist 4 536 08.01.2016 11:02
Letzter Beitrag: Atwist
  Kann ich in eine For Schleife einen delay einbauen JanGamer11 6 616 05.01.2016 12:34
Letzter Beitrag: Hilgi

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste